From e86c19aecd39d9f8e0ad4e466dab684a6d056f70 Mon Sep 17 00:00:00 2001 From: Owens Ehimen Date: Tue, 17 Feb 2026 15:57:03 -0500 Subject: [PATCH 1/6] 884: Ruby Upgrade --- .ruby-version | 2 +- CHANGELOG.md | 12 ++++ Gemfile | 17 +---- Rakefile | 45 +----------- VERSION | 2 +- lib/tijuana_client/client.rb | 15 ++-- lib/tijuana_client/error_middleware.rb | 12 +++- tijuana_client.gemspec | 97 +++++++++----------------- 8 files changed, 69 insertions(+), 133 deletions(-) create mode 100644 CHANGELOG.md diff --git a/.ruby-version b/.ruby-version index a4dd9db..1454f6e 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.7.4 +4.0.1 diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..9b411c0 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,12 @@ +# Changelog + +## [1.0.0] - 2026-02-11 + +### Added +- Added `faraday ~> 2.0` as explicit runtime dependency +- Added `rake ~> 13.0` as development dependency + +### Updated +- Upgraded from Ruby 2.7.4 to Ruby 4.0.1 +- Updated vertebrae dependency to >= 1.0.5 for Faraday 2.x compatibility +- Modernized gemspec file diff --git a/Gemfile b/Gemfile index 6f1f601..5890016 100644 --- a/Gemfile +++ b/Gemfile @@ -1,17 +1,6 @@ # frozen_string_literal: true -source 'http://rubygems.org' +source 'https://rubygems.org' -gem 'vertebrae', '>= 0.6.0' - -# Add dependencies to develop your gem here. -# Include everything needed to run rake, tests, features, etc. -group :development do - gem 'bundler' - gem 'juwelier', git: 'https://github.com/flajann2/juwelier.git' - gem 'pry' - gem 'pry-byebug' - gem 'rspec' - gem 'rubocop' - gem 'webmock' -end +# Specify your gem's dependencies in tijuana_client.gemspec +gemspec diff --git a/Rakefile b/Rakefile index be3f7d7..82bb534 100644 --- a/Rakefile +++ b/Rakefile @@ -1,49 +1,8 @@ # frozen_string_literal: true -require 'rubygems' -require 'bundler' -begin - Bundler.setup(:default, :development) -rescue Bundler::BundlerError => e - warn e.message - warn 'Run `bundle install` to install missing gems' - exit e.status_code -end -require 'rake' - -require 'juwelier' -Juwelier::Tasks.new do |gem| - # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options - gem.name = 'tijuana_client' - gem.homepage = 'http://github.com/controlshift/tijuana_client' - gem.license = 'MIT' - gem.summary = %(API client for Tijuana) - gem.description = %(An API client for the code that runs Getup.org.au) - gem.email = 'nathan@controlshiftlabs.com' - gem.authors = ['Nathan Woodhull'] - # dependencies defined in Gemfile -end -Juwelier::RubygemsDotOrgTasks.new - -require 'rspec/core' +require 'bundler/gem_tasks' require 'rspec/core/rake_task' -RSpec::Core::RakeTask.new(:spec) do |spec| - spec.pattern = FileList['spec/**/*_spec.rb'] -end -RSpec::Core::RakeTask.new(:rcov) do |spec| - spec.pattern = 'spec/**/*_spec.rb' - spec.rcov = true -end +RSpec::Core::RakeTask.new(:spec) task default: :spec - -require 'rdoc/task' -Rake::RDocTask.new do |rdoc| - version = File.exist?('VERSION') ? File.read('VERSION') : '' - - rdoc.rdoc_dir = 'rdoc' - rdoc.title = "porpoise_external_actions #{version}" - rdoc.rdoc_files.include('README*') - rdoc.rdoc_files.include('lib/**/*.rb') -end diff --git a/VERSION b/VERSION index a2268e2..afaf360 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.3.1 \ No newline at end of file +1.0.0 \ No newline at end of file diff --git a/lib/tijuana_client/client.rb b/lib/tijuana_client/client.rb index bcda0ff..9e37457 100644 --- a/lib/tijuana_client/client.rb +++ b/lib/tijuana_client/client.rb @@ -40,18 +40,17 @@ def request(method, path, params, options) # :nodoc: end def setup - connection.stack do |builder| - builder.use Faraday::Request::Multipart - builder.use Faraday::Request::UrlEncoded + connection.faraday_connection = Faraday.new(connection.configuration.faraday_options) do |f| + f.request :multipart + f.request :url_encoded if connection.configuration.authenticated? - builder.use Faraday::Request::BasicAuthentication, connection.configuration.username, - connection.configuration.password + f.request :authorization, :basic, connection.configuration.username, connection.configuration.password end - builder.use Faraday::Response::Logger if ENV['DEBUG'] + f.response :logger if ENV['DEBUG'] - builder.use TijuanaClient::ErrorMiddleware - builder.adapter connection.configuration.adapter + f.use TijuanaClient::ErrorMiddleware + f.adapter connection.configuration.adapter end end diff --git a/lib/tijuana_client/error_middleware.rb b/lib/tijuana_client/error_middleware.rb index 4061da2..93dd17d 100644 --- a/lib/tijuana_client/error_middleware.rb +++ b/lib/tijuana_client/error_middleware.rb @@ -4,7 +4,7 @@ module TijuanaClient class ValidationError < StandardError; end class EmailValidationError < StandardError; end - class ErrorMiddleware < Faraday::Response::RaiseError + class ErrorMiddleware < Faraday::Middleware def on_complete(env) case env[:status] when 400 @@ -22,5 +22,15 @@ def on_complete(env) raise Faraday::ClientError, response_values(env).to_s end end + + private + + def response_values(env) + { + status: env[:status], + headers: env[:response_headers], + body: env[:body] + } + end end end diff --git a/tijuana_client.gemspec b/tijuana_client.gemspec index 4fec32f..f8e7590 100644 --- a/tijuana_client.gemspec +++ b/tijuana_client.gemspec @@ -1,71 +1,38 @@ -# Generated by juwelier -# DO NOT EDIT THIS FILE DIRECTLY -# Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec' -# -*- encoding: utf-8 -*- -# stub: tijuana_client 0.3.1 ruby lib +# frozen_string_literal: true -Gem::Specification.new do |s| - s.name = "tijuana_client".freeze - s.version = "0.3.1" +lib = File.expand_path('lib', __dir__) +$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) - s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= - s.require_paths = ["lib".freeze] - s.authors = ["Nathan Woodhull".freeze] - s.date = "2021-07-23" - s.description = "An API client for the code that runs Getup.org.au".freeze - s.email = "nathan@controlshiftlabs.com".freeze - s.extra_rdoc_files = [ - "LICENSE.txt", - "README.md" - ] - s.files = [ - ".github/workflows/ci.yml", - ".rubocop.yml", - ".ruby-gemset", - ".ruby-version", - "Gemfile", - "LICENSE.txt", - "README.md", - "Rakefile", - "VERSION", - "lib/tijuana_client.rb", - "lib/tijuana_client/base.rb", - "lib/tijuana_client/client.rb", - "lib/tijuana_client/error_middleware.rb", - "lib/tijuana_client/user.rb", - "spec/client_spec.rb", - "spec/spec_helper.rb", - "spec/tijuana_spec.rb", - "spec/user_spec.rb", - "tijuana_client.gemspec" - ] - s.homepage = "http://github.com/controlshift/tijuana_client".freeze - s.licenses = ["MIT".freeze] - s.rubygems_version = "3.1.6".freeze - s.summary = "API client for Tijuana".freeze +Gem::Specification.new do |spec| + spec.name = 'tijuana_client' + spec.version = File.read(File.expand_path('VERSION', __dir__)).strip + spec.authors = ['Nathan Woodhull', 'Owens Ehimen', 'Diego Marcet', 'Grey Moore'] + spec.email = ['talk@controlshiftlabs.com'] - if s.respond_to? :specification_version then - s.specification_version = 4 - end + spec.summary = 'API client for Tijuana' + spec.description = 'An API client for the code that runs Getup.org.au' + spec.homepage = 'https://github.com/controlshift/tijuana_client' + spec.license = 'MIT' - if s.respond_to? :add_runtime_dependency then - s.add_runtime_dependency(%q.freeze, [">= 0.6.0"]) - s.add_development_dependency(%q.freeze, [">= 0"]) - s.add_development_dependency(%q.freeze, [">= 0"]) - s.add_development_dependency(%q.freeze, [">= 0"]) - s.add_development_dependency(%q.freeze, [">= 0"]) - s.add_development_dependency(%q.freeze, [">= 0"]) - s.add_development_dependency(%q.freeze, [">= 0"]) - s.add_development_dependency(%q.freeze, [">= 0"]) - else - s.add_dependency(%q.freeze, [">= 0.6.0"]) - s.add_dependency(%q.freeze, [">= 0"]) - s.add_dependency(%q.freeze, [">= 0"]) - s.add_dependency(%q.freeze, [">= 0"]) - s.add_dependency(%q.freeze, [">= 0"]) - s.add_dependency(%q.freeze, [">= 0"]) - s.add_dependency(%q.freeze, [">= 0"]) - s.add_dependency(%q.freeze, [">= 0"]) + spec.files = Dir.chdir(File.expand_path(__dir__)) do + `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) } end -end + spec.require_paths = ['lib'] + + spec.required_ruby_version = '>= 3.0.0' + # Runtime dependencies + spec.add_runtime_dependency 'vertebrae', '>= 1.0.5' + spec.add_runtime_dependency 'faraday', '~> 2.0' + + # Development dependencies + spec.add_development_dependency 'bundler', '>= 2.0' + spec.add_development_dependency 'pry' + spec.add_development_dependency 'pry-byebug' + spec.add_development_dependency 'rake', '~> 13.0' + spec.add_development_dependency 'rspec', '~> 3.0' + spec.add_development_dependency 'rubocop' + spec.add_development_dependency 'webmock' + + spec.metadata['rubygems_mfa_required'] = 'true' +end From 2f2ad060a74454d76b0a82a82f2c9fd5dd26a839 Mon Sep 17 00:00:00 2001 From: Owens Ehimen Date: Wed, 18 Feb 2026 09:20:11 -0500 Subject: [PATCH 2/6] 884: Upgrade ruby in CI --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 97c0804..90d6042 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,7 +8,7 @@ jobs: - uses: actions/checkout@v2 - uses: ruby/setup-ruby@477b21f02be01bcb8030d50f37cfec92bfa615b6 with: - ruby-version: 2.7 + ruby-version: 4.0 bundler-cache: true - run: bundle install - run: bundle exec rspec @@ -18,7 +18,7 @@ jobs: - uses: actions/checkout@v2 - uses: ruby/setup-ruby@477b21f02be01bcb8030d50f37cfec92bfa615b6 with: - ruby-version: 2.7 + ruby-version: 4.0 bundler-cache: true - run: bundle install - run: bundle exec rubocop From 63732309c84a2a563ab8637d6b9195a6c4ef19d8 Mon Sep 17 00:00:00 2001 From: Owens Ehimen Date: Wed, 18 Feb 2026 09:21:38 -0500 Subject: [PATCH 3/6] 884: Upgrade ruby setup version --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 90d6042..78319ea 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,7 +6,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: ruby/setup-ruby@477b21f02be01bcb8030d50f37cfec92bfa615b6 + - uses: ruby/setup-ruby@v1 with: ruby-version: 4.0 bundler-cache: true @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: ruby/setup-ruby@477b21f02be01bcb8030d50f37cfec92bfa615b6 + - uses: ruby/setup-ruby@v1 with: ruby-version: 4.0 bundler-cache: true From 6d1b2395985c457a86d39f4aaaa7db9fcc55bbe7 Mon Sep 17 00:00:00 2001 From: Owens Ehimen Date: Thu, 19 Feb 2026 17:18:58 -0500 Subject: [PATCH 4/6] 884: Address PR comments --- .github/workflows/ci.yml | 13 +++++++------ CHANGELOG.md | 11 +++-------- README.md | 5 +++++ tijuana_client.gemspec | 14 +++++++------- 4 files changed, 22 insertions(+), 21 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 78319ea..01b7919 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,21 +4,22 @@ on: [push] jobs: test: runs-on: ubuntu-latest + strategy: + matrix: + ruby-version: ['3.3', '3.4', '4.0'] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - uses: ruby/setup-ruby@v1 with: - ruby-version: 4.0 + ruby-version: ${{ matrix.ruby-version }} bundler-cache: true - - run: bundle install - run: bundle exec rspec rubocop: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - uses: ruby/setup-ruby@v1 with: - ruby-version: 4.0 + ruby-version: '4.0' bundler-cache: true - - run: bundle install - run: bundle exec rubocop diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b411c0..306f112 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,11 +2,6 @@ ## [1.0.0] - 2026-02-11 -### Added -- Added `faraday ~> 2.0` as explicit runtime dependency -- Added `rake ~> 13.0` as development dependency - -### Updated -- Upgraded from Ruby 2.7.4 to Ruby 4.0.1 -- Updated vertebrae dependency to >= 1.0.5 for Faraday 2.x compatibility -- Modernized gemspec file +### Breaking Changes +- Now requires Faraday 2.x (previously supported Faraday 1.x) +- Dropped support for Ruby versions older than 3.3. Officially supported versions are Ruby 3.3, 3.4, and 4.0. diff --git a/README.md b/README.md index 562e389..e3a3871 100644 --- a/README.md +++ b/README.md @@ -4,3 +4,8 @@ tijuana_client [![CI Status](https://github.com/controlshift/tijuana_client/actions/workflows/ci.yml/badge.svg)](https://github.com/controlshift/tijuana_client/actions/workflows/ci.yml) An exceptionally simple client for Getup's Tijuana + +## Requirements + +- Ruby 3.3, 3.4, or 4.0 +- Faraday ~> 2.0 diff --git a/tijuana_client.gemspec b/tijuana_client.gemspec index f8e7590..92b1335 100644 --- a/tijuana_client.gemspec +++ b/tijuana_client.gemspec @@ -19,20 +19,20 @@ Gem::Specification.new do |spec| end spec.require_paths = ['lib'] - spec.required_ruby_version = '>= 3.0.0' + spec.required_ruby_version = ['>= 3.3', '< 5.0'] # Runtime dependencies - spec.add_runtime_dependency 'vertebrae', '>= 1.0.5' + spec.add_runtime_dependency 'vertebrae', '~> 1.0' spec.add_runtime_dependency 'faraday', '~> 2.0' # Development dependencies - spec.add_development_dependency 'bundler', '>= 2.0' - spec.add_development_dependency 'pry' - spec.add_development_dependency 'pry-byebug' + spec.add_development_dependency 'bundler', '~> 2.0' + spec.add_development_dependency 'pry', '~> 0.14' + spec.add_development_dependency 'pry-byebug', '~> 3.0' spec.add_development_dependency 'rake', '~> 13.0' spec.add_development_dependency 'rspec', '~> 3.0' - spec.add_development_dependency 'rubocop' - spec.add_development_dependency 'webmock' + spec.add_development_dependency 'rubocop', '~> 1.0' + spec.add_development_dependency 'webmock', '~> 3.0' spec.metadata['rubygems_mfa_required'] = 'true' end From c9bfc333359e9842ce8b13f82e07426e8faa4caf Mon Sep 17 00:00:00 2001 From: Owens Ehimen Date: Thu, 19 Feb 2026 17:25:52 -0500 Subject: [PATCH 5/6] 884: Upgrade bundler --- tijuana_client.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tijuana_client.gemspec b/tijuana_client.gemspec index 92b1335..2632a03 100644 --- a/tijuana_client.gemspec +++ b/tijuana_client.gemspec @@ -26,7 +26,7 @@ Gem::Specification.new do |spec| spec.add_runtime_dependency 'faraday', '~> 2.0' # Development dependencies - spec.add_development_dependency 'bundler', '~> 2.0' + spec.add_development_dependency 'bundler', '~> 4.0' spec.add_development_dependency 'pry', '~> 0.14' spec.add_development_dependency 'pry-byebug', '~> 3.0' spec.add_development_dependency 'rake', '~> 13.0' From 56c9ab69b15120900176e81a62eb980a0c9f928c Mon Sep 17 00:00:00 2001 From: Owens Ehimen Date: Thu, 19 Feb 2026 17:46:14 -0500 Subject: [PATCH 6/6] 884: Bound bundler versions --- tijuana_client.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tijuana_client.gemspec b/tijuana_client.gemspec index 2632a03..df8606c 100644 --- a/tijuana_client.gemspec +++ b/tijuana_client.gemspec @@ -26,7 +26,7 @@ Gem::Specification.new do |spec| spec.add_runtime_dependency 'faraday', '~> 2.0' # Development dependencies - spec.add_development_dependency 'bundler', '~> 4.0' + spec.add_development_dependency 'bundler', '>= 2.0', '< 5.0' spec.add_development_dependency 'pry', '~> 0.14' spec.add_development_dependency 'pry-byebug', '~> 3.0' spec.add_development_dependency 'rake', '~> 13.0'