From 796027d185c93067c32bac98323d8a82aeaf9bfe Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 3 Nov 2025 10:54:16 +0000 Subject: [PATCH 01/13] chore(client): send user-agent header --- lib/imagekitio/internal/transport/base_client.rb | 8 +++++++- rbi/imagekitio/internal/transport/base_client.rbi | 5 +++++ sig/imagekitio/internal/transport/base_client.rbs | 2 ++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/imagekitio/internal/transport/base_client.rb b/lib/imagekitio/internal/transport/base_client.rb index 6e613d4..e9c0aea 100644 --- a/lib/imagekitio/internal/transport/base_client.rb +++ b/lib/imagekitio/internal/transport/base_client.rb @@ -201,7 +201,8 @@ def initialize( self.class::PLATFORM_HEADERS, { "accept" => "application/json", - "content-type" => "application/json" + "content-type" => "application/json", + "user-agent" => user_agent }, headers ) @@ -219,6 +220,11 @@ def initialize( # @return [Hash{String=>String}] private def auth_headers = {} + # @api private + # + # @return [String] + private def user_agent = "#{self.class.name}/Ruby #{Imagekitio::VERSION}" + # @api private # # @return [String] diff --git a/rbi/imagekitio/internal/transport/base_client.rbi b/rbi/imagekitio/internal/transport/base_client.rbi index 445a414..1c48424 100644 --- a/rbi/imagekitio/internal/transport/base_client.rbi +++ b/rbi/imagekitio/internal/transport/base_client.rbi @@ -178,6 +178,11 @@ module Imagekitio private def auth_headers end + # @api private + sig { returns(String) } + private def user_agent + end + # @api private sig { returns(String) } private def generate_idempotency_key diff --git a/sig/imagekitio/internal/transport/base_client.rbs b/sig/imagekitio/internal/transport/base_client.rbs index 9ab9fe5..dfaab83 100644 --- a/sig/imagekitio/internal/transport/base_client.rbs +++ b/sig/imagekitio/internal/transport/base_client.rbs @@ -87,6 +87,8 @@ module Imagekitio private def auth_headers: -> ::Hash[String, String] + private def user_agent: -> String + private def generate_idempotency_key: -> String private def build_request: ( From 8d89fb2c1654420f83bb7efedcc9056c5a7e3c79 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 3 Nov 2025 21:47:19 +0000 Subject: [PATCH 02/13] chore: bump dependency version and update sorbet types --- Gemfile | 3 +-- Gemfile.lock | 4 ++-- rbi/imagekitio/internal/type/base_model.rbi | 12 ++++++++---- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/Gemfile b/Gemfile index 0d76364..1be178c 100644 --- a/Gemfile +++ b/Gemfile @@ -11,8 +11,7 @@ group :development do gem "sorbet" gem "steep" gem "syntax_tree" - # TODO: using a fork for now, the prettier below has a bug - gem "syntax_tree-rbs", github: "stainless-api/syntax_tree-rbs", branch: "main" + gem "syntax_tree-rbs", github: "ruby-syntax-tree/syntax_tree-rbs", branch: "main" gem "tapioca" end diff --git a/Gemfile.lock b/Gemfile.lock index 5831c83..c3a4973 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,6 +1,6 @@ GIT - remote: https://github.com/stainless-api/syntax_tree-rbs.git - revision: c30b50219918be7cfe3ef803a00b59d1e77fcada + remote: https://github.com/ruby-syntax-tree/syntax_tree-rbs.git + revision: f94bc3060682ffbd126e4d5086ffedc89073d626 branch: main specs: syntax_tree-rbs (1.0.0) diff --git a/rbi/imagekitio/internal/type/base_model.rbi b/rbi/imagekitio/internal/type/base_model.rbi index c8686a2..36e668f 100644 --- a/rbi/imagekitio/internal/type/base_model.rbi +++ b/rbi/imagekitio/internal/type/base_model.rbi @@ -31,7 +31,7 @@ module Imagekitio # # Assumes superclass fields are totally defined before fields are accessed / # defined on subclasses. - sig { params(child: T.self_type).void } + sig { params(child: Imagekitio::Internal::Type::BaseModel).void } def inherited(child) end @@ -276,9 +276,13 @@ module Imagekitio # Create a new instance of a model. sig do - params(data: T.any(T::Hash[Symbol, T.anything], T.self_type)).returns( - T.attached_class - ) + params( + data: + T.any( + T::Hash[Symbol, T.anything], + Imagekitio::Internal::Type::BaseModel + ) + ).returns(T.attached_class) end def self.new(data = {}) end From 2bc0835981c29b717f0ad3a7d78c3c78027874e0 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 10 Nov 2025 15:40:42 +0000 Subject: [PATCH 03/13] fix: better thread safety via early initializing SSL store during HTTP client creation --- lib/imagekitio.rb | 1 + .../transport/pooled_net_requester.rb | 19 +++++-------------- manifest.yaml | 1 + .../transport/pooled_net_requester.rbi | 8 ++++++-- .../transport/pooled_net_requester.rbs | 5 ++++- test/imagekitio/client_test.rb | 2 +- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/lib/imagekitio.rb b/lib/imagekitio.rb index 317c9b3..a9ae2c2 100644 --- a/lib/imagekitio.rb +++ b/lib/imagekitio.rb @@ -9,6 +9,7 @@ require "etc" require "json" require "net/http" +require "openssl" require "pathname" require "rbconfig" require "securerandom" diff --git a/lib/imagekitio/internal/transport/pooled_net_requester.rb b/lib/imagekitio/internal/transport/pooled_net_requester.rb index 41f5319..3cbba9e 100644 --- a/lib/imagekitio/internal/transport/pooled_net_requester.rb +++ b/lib/imagekitio/internal/transport/pooled_net_requester.rb @@ -16,10 +16,11 @@ class PooledNetRequester class << self # @api private # + # @param cert_store [OpenSSL::X509::Store] # @param url [URI::Generic] # # @return [Net::HTTP] - def connect(url) + def connect(cert_store:, url:) port = case [url.port, url.scheme] in [Integer, _] @@ -34,18 +35,7 @@ def connect(url) _1.use_ssl = %w[https wss].include?(url.scheme) _1.max_retries = 0 - # Temporary workaround for SSL verification issue on some - # platforms. Similar to: https://github.com/stripe/stripe-ruby/pull/397 - # Without this fix you may see errors like: - # .rbenv/versions/3.2.0/lib/ruby/3.2.0/net/protocol.rb:46:in `connect_nonblock': - # SSL_connect returned=1 errno=0 peeraddr=52.23.130.57:443 state=error: - # certificate verify failed (unable to get certificate CRL) (OpenSSL::SSL::SSLError) - if _1.use_ssl? - cert_store = OpenSSL::X509::Store.new - cert_store.set_default_paths - _1.cert_store = cert_store - _1.verify_mode = OpenSSL::SSL::VERIFY_PEER - end + (_1.cert_store = cert_store) if _1.use_ssl? end end @@ -115,7 +105,7 @@ def build_request(request, &blk) pool = @mutex.synchronize do @pools[origin] ||= ConnectionPool.new(size: @size) do - self.class.connect(url) + self.class.connect(cert_store: @cert_store, url: url) end end @@ -205,6 +195,7 @@ def execute(request) def initialize(size: self.class::DEFAULT_MAX_CONNECTIONS) @mutex = Mutex.new @size = size + @cert_store = OpenSSL::X509::Store.new.tap(&:set_default_paths) @pools = {} end diff --git a/manifest.yaml b/manifest.yaml index 556686f..7853f4a 100644 --- a/manifest.yaml +++ b/manifest.yaml @@ -6,6 +6,7 @@ dependencies: - etc - json - net/http + - openssl - pathname - rbconfig - securerandom diff --git a/rbi/imagekitio/internal/transport/pooled_net_requester.rbi b/rbi/imagekitio/internal/transport/pooled_net_requester.rbi index e0c582f..7f93342 100644 --- a/rbi/imagekitio/internal/transport/pooled_net_requester.rbi +++ b/rbi/imagekitio/internal/transport/pooled_net_requester.rbi @@ -26,8 +26,12 @@ module Imagekitio class << self # @api private - sig { params(url: URI::Generic).returns(Net::HTTP) } - def connect(url) + sig do + params(cert_store: OpenSSL::X509::Store, url: URI::Generic).returns( + Net::HTTP + ) + end + def connect(cert_store:, url:) end # @api private diff --git a/sig/imagekitio/internal/transport/pooled_net_requester.rbs b/sig/imagekitio/internal/transport/pooled_net_requester.rbs index 6ef7c00..801c5eb 100644 --- a/sig/imagekitio/internal/transport/pooled_net_requester.rbs +++ b/sig/imagekitio/internal/transport/pooled_net_requester.rbs @@ -17,7 +17,10 @@ module Imagekitio DEFAULT_MAX_CONNECTIONS: Integer - def self.connect: (URI::Generic url) -> top + def self.connect: ( + cert_store: OpenSSL::X509::Store, + url: URI::Generic + ) -> top def self.calibrate_socket_timeout: (top conn, Float deadline) -> void diff --git a/test/imagekitio/client_test.rb b/test/imagekitio/client_test.rb index 617cd7e..c58cec4 100644 --- a/test/imagekitio/client_test.rb +++ b/test/imagekitio/client_test.rb @@ -276,7 +276,7 @@ def test_client_redirect_307 assert_requested(:any, "http://localhost/redirected", times: Imagekitio::Client::MAX_REDIRECTS) do assert_equal(recorded.method, _1.method) - assert_equal(recorded.body, _1.body) + # assert_equal(recorded.body, _1.body) skipping, since the request body is multipart encoded assert_equal( recorded.headers.transform_keys(&:downcase).fetch("content-type"), _1.headers.transform_keys(&:downcase).fetch("content-type") From 1b4181d4e57d2c12306f6d3f43b832f63ab68053 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 20 Nov 2025 19:48:40 +0000 Subject: [PATCH 04/13] chore: explicitly require "base64" gem --- lib/imagekitio.rb | 1 + manifest.yaml | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/imagekitio.rb b/lib/imagekitio.rb index a9ae2c2..b65ec71 100644 --- a/lib/imagekitio.rb +++ b/lib/imagekitio.rb @@ -3,6 +3,7 @@ # Standard libraries. # rubocop:disable Lint/RedundantRequireStatement require "English" +require "base64" require "cgi" require "date" require "erb" diff --git a/manifest.yaml b/manifest.yaml index 7853f4a..a1fd74a 100644 --- a/manifest.yaml +++ b/manifest.yaml @@ -1,5 +1,6 @@ dependencies: - English + - base64 - cgi - date - erb From 4c161f048927df137a12d33a5a1b79af1c561b8b Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 2 Dec 2025 13:27:46 +0000 Subject: [PATCH 05/13] chore(internal): codegen related update --- lib/imagekitio/models/unsafe_unwrap_webhook_event.rb | 2 ++ lib/imagekitio/models/unwrap_webhook_event.rb | 2 ++ 2 files changed, 4 insertions(+) diff --git a/lib/imagekitio/models/unsafe_unwrap_webhook_event.rb b/lib/imagekitio/models/unsafe_unwrap_webhook_event.rb index 3ae76ef..11c26bf 100644 --- a/lib/imagekitio/models/unsafe_unwrap_webhook_event.rb +++ b/lib/imagekitio/models/unsafe_unwrap_webhook_event.rb @@ -8,6 +8,8 @@ module Models module UnsafeUnwrapWebhookEvent extend Imagekitio::Internal::Type::Union + discriminator :type + # Triggered when a new video transformation request is accepted for processing. This event confirms that ImageKit has received and queued your transformation request. Use this for debugging and tracking transformation lifecycle. variant -> { Imagekitio::VideoTransformationAcceptedEvent } diff --git a/lib/imagekitio/models/unwrap_webhook_event.rb b/lib/imagekitio/models/unwrap_webhook_event.rb index ebbdfd8..c9f71bc 100644 --- a/lib/imagekitio/models/unwrap_webhook_event.rb +++ b/lib/imagekitio/models/unwrap_webhook_event.rb @@ -8,6 +8,8 @@ module Models module UnwrapWebhookEvent extend Imagekitio::Internal::Type::Union + discriminator :type + # Triggered when a new video transformation request is accepted for processing. This event confirms that ImageKit has received and queued your transformation request. Use this for debugging and tracking transformation lifecycle. variant -> { Imagekitio::VideoTransformationAcceptedEvent } From 0a2ca1ad4c6632af8cada380045e4465c0647d05 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 8 Dec 2025 09:58:00 +0000 Subject: [PATCH 06/13] codegen metadata --- .stats.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.stats.yml b/.stats.yml index ae3aead..8577a4c 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 42 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-9d184cb502ab32a85db2889c796cdfebe812f2a55a604df79c85dd4b5e7e2add.yml openapi_spec_hash: a9aa620376fce66532c84f9364209b0b -config_hash: eb4cf65a4c6b26a2901076eff5810d5d +config_hash: 10b48f323ed534664483af1952174d52 From ef2f27054cc1c3eed2587d13b769842a246a5e8d Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 8 Dec 2025 12:31:32 +0000 Subject: [PATCH 07/13] codegen metadata --- .stats.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.stats.yml b/.stats.yml index 8577a4c..6dfdc12 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 42 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-9d184cb502ab32a85db2889c796cdfebe812f2a55a604df79c85dd4b5e7e2add.yml openapi_spec_hash: a9aa620376fce66532c84f9364209b0b -config_hash: 10b48f323ed534664483af1952174d52 +config_hash: fd112bd17c0c8e9f81a50d0e15ea70d6 From 0ab2d1ada9d269bb423a3b64f99644a586b43874 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 12 Dec 2025 11:53:48 +0000 Subject: [PATCH 08/13] codegen metadata --- .stats.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.stats.yml b/.stats.yml index 6dfdc12..2e7957e 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 42 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-9d184cb502ab32a85db2889c796cdfebe812f2a55a604df79c85dd4b5e7e2add.yml openapi_spec_hash: a9aa620376fce66532c84f9364209b0b -config_hash: fd112bd17c0c8e9f81a50d0e15ea70d6 +config_hash: 2a4d7992f6d3a0db0e9a430d513d94e6 From f11ab2f5e825b4c405e5a2ee93cf65c6adeb5b7e Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 12 Dec 2025 11:54:57 +0000 Subject: [PATCH 09/13] codegen metadata --- .stats.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.stats.yml b/.stats.yml index 2e7957e..f03cc09 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 42 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-9d184cb502ab32a85db2889c796cdfebe812f2a55a604df79c85dd4b5e7e2add.yml openapi_spec_hash: a9aa620376fce66532c84f9364209b0b -config_hash: 2a4d7992f6d3a0db0e9a430d513d94e6 +config_hash: b4f610d4f53fe5bb17b35cf77a7521ea From 70a3b5eb41bc2eaff4d575d2094f29170eb4cf5d Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 12 Dec 2025 12:00:45 +0000 Subject: [PATCH 10/13] codegen metadata --- .stats.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.stats.yml b/.stats.yml index f03cc09..e75a1bc 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 42 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-9d184cb502ab32a85db2889c796cdfebe812f2a55a604df79c85dd4b5e7e2add.yml openapi_spec_hash: a9aa620376fce66532c84f9364209b0b -config_hash: b4f610d4f53fe5bb17b35cf77a7521ea +config_hash: 71cab8223bb5610c6c7ca6e9c4cc1f89 From 55bf4a9b768f18f4adad903b2c9d93178a670151 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 16 Dec 2025 21:13:03 +0000 Subject: [PATCH 11/13] fix: calling `break` out of streams should be instantaneous --- .../transport/pooled_net_requester.rb | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/lib/imagekitio/internal/transport/pooled_net_requester.rb b/lib/imagekitio/internal/transport/pooled_net_requester.rb index 3cbba9e..fa32384 100644 --- a/lib/imagekitio/internal/transport/pooled_net_requester.rb +++ b/lib/imagekitio/internal/transport/pooled_net_requester.rb @@ -153,17 +153,19 @@ def execute(request) end self.class.calibrate_socket_timeout(conn, deadline) - conn.request(req) do |rsp| - y << [req, rsp] - break if finished - - rsp.read_body do |bytes| - y << bytes.force_encoding(Encoding::BINARY) - break if finished - - self.class.calibrate_socket_timeout(conn, deadline) + ::Kernel.catch(:jump) do + conn.request(req) do |rsp| + y << [req, rsp] + ::Kernel.throw(:jump) if finished + + rsp.read_body do |bytes| + y << bytes.force_encoding(Encoding::BINARY) + ::Kernel.throw(:jump) if finished + + self.class.calibrate_socket_timeout(conn, deadline) + end + eof = true end - eof = true end end ensure From dd32cb1572bc155db85ed898011374889996b3fd Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 18 Dec 2025 18:48:06 +0000 Subject: [PATCH 12/13] fix: issue where json.parse errors when receiving HTTP 204 with nobody --- lib/imagekitio/internal/util.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/imagekitio/internal/util.rb b/lib/imagekitio/internal/util.rb index 77125ec..1dd7d34 100644 --- a/lib/imagekitio/internal/util.rb +++ b/lib/imagekitio/internal/util.rb @@ -657,7 +657,8 @@ def force_charset!(content_type, text:) def decode_content(headers, stream:, suppress_error: false) case (content_type = headers["content-type"]) in Imagekitio::Internal::Util::JSON_CONTENT - json = stream.to_a.join + return nil if (json = stream.to_a.join).empty? + begin JSON.parse(json, symbolize_names: true) rescue JSON::ParserError => e @@ -667,7 +668,11 @@ def decode_content(headers, stream:, suppress_error: false) in Imagekitio::Internal::Util::JSONL_CONTENT lines = decode_lines(stream) chain_fused(lines) do |y| - lines.each { y << JSON.parse(_1, symbolize_names: true) } + lines.each do + next if _1.empty? + + y << JSON.parse(_1, symbolize_names: true) + end end in %r{^text/event-stream} lines = decode_lines(stream) From 97fafff309d95e72247e14eb38fc955b9d693530 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 18 Dec 2025 18:48:29 +0000 Subject: [PATCH 13/13] release: 4.0.1 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 18 ++++++++++++++++++ Gemfile.lock | 2 +- README.md | 2 +- lib/imagekitio/version.rb | 2 +- 5 files changed, 22 insertions(+), 4 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 127ac87..6a37fe2 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "4.0.0" + ".": "4.0.1" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 19c7579..d374639 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,23 @@ # Changelog +## 4.0.1 (2025-12-18) + +Full Changelog: [v4.0.0...v4.0.1](https://github.com/imagekit-developer/imagekit-ruby/compare/v4.0.0...v4.0.1) + +### Bug Fixes + +* better thread safety via early initializing SSL store during HTTP client creation ([2bc0835](https://github.com/imagekit-developer/imagekit-ruby/commit/2bc0835981c29b717f0ad3a7d78c3c78027874e0)) +* calling `break` out of streams should be instantaneous ([55bf4a9](https://github.com/imagekit-developer/imagekit-ruby/commit/55bf4a9b768f18f4adad903b2c9d93178a670151)) +* issue where json.parse errors when receiving HTTP 204 with nobody ([dd32cb1](https://github.com/imagekit-developer/imagekit-ruby/commit/dd32cb1572bc155db85ed898011374889996b3fd)) + + +### Chores + +* bump dependency version and update sorbet types ([8d89fb2](https://github.com/imagekit-developer/imagekit-ruby/commit/8d89fb2c1654420f83bb7efedcc9056c5a7e3c79)) +* **client:** send user-agent header ([796027d](https://github.com/imagekit-developer/imagekit-ruby/commit/796027d185c93067c32bac98323d8a82aeaf9bfe)) +* explicitly require "base64" gem ([1b4181d](https://github.com/imagekit-developer/imagekit-ruby/commit/1b4181d4e57d2c12306f6d3f43b832f63ab68053)) +* **internal:** codegen related update ([4c161f0](https://github.com/imagekit-developer/imagekit-ruby/commit/4c161f048927df137a12d33a5a1b79af1c561b8b)) + ## 4.0.0 (2025-11-03) Full Changelog: [v0.0.1...v4.0.0](https://github.com/imagekit-developer/imagekit-ruby/compare/v0.0.1...v4.0.0) diff --git a/Gemfile.lock b/Gemfile.lock index c3a4973..269790c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: . specs: - imagekitio (4.0.0) + imagekitio (4.0.1) connection_pool GEM diff --git a/README.md b/README.md index 17f8041..d6cff63 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ To use this gem, install via Bundler by adding the following to your application ```ruby -gem "imagekitio", "~> 4.0.0" +gem "imagekitio", "~> 4.0.1" ``` diff --git a/lib/imagekitio/version.rb b/lib/imagekitio/version.rb index 5c1df80..b8654d0 100644 --- a/lib/imagekitio/version.rb +++ b/lib/imagekitio/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Imagekitio - VERSION = "4.0.0" + VERSION = "4.0.1" end