From 413a885b75439794ae87af26cd7d55e61bff06d8 Mon Sep 17 00:00:00 2001 From: kai-matsudate Date: Sat, 25 Apr 2026 23:39:30 +0900 Subject: [PATCH] Fix missing `require` statements for Ruby standard libraries MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `lib/cloudinary/base_api.rb` calls `Time.parse` in `Response#initialize` and `Base64.urlsafe_encode64` in `get_authorization_header_value`. `lib/cloudinary/search.rb` calls `Base64.urlsafe_encode64` and `JSON.generate` in `Search#to_url`. `lib/cloudinary/utils.rb` calls `Base64.urlsafe_encode64` in several places (e.g. signed URL generation). None of these files require `time` / `base64` / `json` directly. Historically this worked by accident because the test suite's `spec_helper` pre-requires `active_storage/test_helper`, `nokogiri`, and friends, which transitively load those stdlibs before `cloudinary` is loaded. In a plain Ruby process — for example on Ruby 4.0 — `require "cloudinary"` succeeds but the affected paths fail: NoMethodError: undefined method 'parse' for class Time …/cloudinary/base_api.rb:30:in 'Cloudinary::BaseApi::Response#initialize' NameError: uninitialized constant Cloudinary::Utils::Base64 …/cloudinary/utils.rb:620:in 'Cloudinary::Utils.cloudinary_url' NameError: uninitialized constant Cloudinary::Search::Base64 …/cloudinary/search.rb:140:in 'Cloudinary::Search#to_url' This follows the same pattern as e2fb1138 ("Add missing `require 'net/http'`"), adding the explicit stdlib `require` lines that each affected file needs. --- lib/cloudinary/base_api.rb | 2 ++ lib/cloudinary/search.rb | 3 +++ lib/cloudinary/utils.rb | 1 + 3 files changed, 6 insertions(+) diff --git a/lib/cloudinary/base_api.rb b/lib/cloudinary/base_api.rb index 68d0a86c..24fe93c3 100644 --- a/lib/cloudinary/base_api.rb +++ b/lib/cloudinary/base_api.rb @@ -1,5 +1,7 @@ +require "base64" require "faraday" require "json" +require "time" module Cloudinary::BaseApi @adapter = nil diff --git a/lib/cloudinary/search.rb b/lib/cloudinary/search.rb index 2d4cbb26..be96ef6c 100644 --- a/lib/cloudinary/search.rb +++ b/lib/cloudinary/search.rb @@ -1,3 +1,6 @@ +require "base64" +require "json" + class Cloudinary::Search ENDPOINT = 'resources' diff --git a/lib/cloudinary/utils.rb b/lib/cloudinary/utils.rb index 0f48ca8e..16673ba4 100644 --- a/lib/cloudinary/utils.rb +++ b/lib/cloudinary/utils.rb @@ -1,6 +1,7 @@ # Copyright Cloudinary # frozen_string_literal: true +require 'base64' require 'digest/sha1' require 'zlib' require 'uri'