Skip to content

Commit 965c553

Browse files
committed
CON 889: Upgrade ruby to 4.0.1 + downstream updates
1 parent b7a4c63 commit 965c553

9 files changed

Lines changed: 74 additions & 160 deletions

File tree

.ruby-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.2.2
1+
4.0.1

Gemfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# frozen_string_literal: true
22

3-
source 'http://rubygems.org'
3+
source 'https://rubygems.org'
44

55
gem 'vertebrae', '>= 0.6.0'
66

@@ -10,7 +10,7 @@ group :development do
1010
gem 'em-http-request', '>=1.1.5', '<2.0'
1111
gem 'em-synchrony', '>=1.0.6', '<2.0'
1212
gem 'eventmachine', '>=1.2.5', '<2.0'
13-
gem 'juwelier', git: 'https://github.com/flajann2/juwelier.git'
13+
gem 'rake'
1414
gem 'rspec', '~> 3.7'
1515
gem 'rubocop'
1616
gem 'webmock', '~> 3.3'

Rakefile

Lines changed: 4 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,13 @@
11
# frozen_string_literal: true
22

3-
require 'rubygems'
4-
require 'bundler'
5-
begin
6-
Bundler.setup(:default, :development)
7-
rescue Bundler::BundlerError => e
8-
warn e.message
9-
warn 'Run `bundle install` to install missing gems'
10-
exit e.status_code
11-
end
12-
require 'rake'
13-
require './lib/action_kit_rest/version'
14-
15-
require 'juwelier'
16-
Juwelier::Tasks.new do |gem|
17-
gem.name = 'action_kit_rest'
18-
gem.version = ActionKitRest::VERSION::STRING
19-
gem.homepage = 'http://github.com/controlshift/action_kit_rest'
20-
gem.license = 'MIT'
21-
gem.summary = %(A wrapper for the ActionKit REST API)
22-
gem.description = %(Gem for interacting with the ActionKit API)
23-
gem.email = 'systems@controlshiftlabs.com'
24-
gem.authors = ['Nathan Woodhull', 'Diego Marcet', 'Grey Moore']
25-
# dependencies defined in Gemfile
26-
end
27-
Juwelier::RubygemsDotOrgTasks.new
28-
3+
require 'bundler/gem_tasks'
294
require 'rspec/core/rake_task'
5+
306
desc 'Default: run specs.'
317
task default: :spec
328

339
desc 'Run specs'
34-
RSpec::Core::RakeTask.new do |t|
35-
t.pattern = './spec/**/*_spec.rb' # don't need this, it's default.
10+
RSpec::Core::RakeTask.new(:spec) do |t|
11+
t.pattern = './spec/**/*_spec.rb'
3612
t.rspec_opts = '--color'
3713
end
38-
39-
require 'rdoc/task'
40-
Rake::RDocTask.new do |rdoc|
41-
version = File.exist?('VERSION') ? File.read('VERSION') : ''
42-
43-
rdoc.rdoc_dir = 'rdoc'
44-
rdoc.title = "action_kit_rest #{version}"
45-
rdoc.rdoc_files.include('README*')
46-
rdoc.rdoc_files.include('lib/**/*.rb')
47-
end

action_kit_rest.gemspec

Lines changed: 39 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -1,111 +1,45 @@
1-
# Generated by juwelier
2-
# DO NOT EDIT THIS FILE DIRECTLY
3-
# Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4-
# -*- encoding: utf-8 -*-
5-
# stub: action_kit_rest 0.4.11 ruby lib
1+
# frozen_string_literal: true
62

7-
Gem::Specification.new do |s|
8-
s.name = "action_kit_rest".freeze
9-
s.version = "0.4.11"
3+
require_relative "lib/action_kit_rest/version"
104

11-
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12-
s.require_paths = ["lib".freeze]
13-
s.authors = ["Nathan Woodhull".freeze, "Diego Marcet".freeze, "Grey Moore".freeze]
14-
s.date = "2025-10-27"
15-
s.description = "Gem for interacting with the ActionKit API".freeze
16-
s.email = "systems@controlshiftlabs.com".freeze
17-
s.extra_rdoc_files = [
18-
"LICENSE.txt",
19-
"README.md"
20-
]
21-
s.files = [
22-
".document",
23-
".github/workflows/ci.yml",
24-
".rspec",
25-
".rubocop.yml",
26-
".ruby-gemset",
27-
".ruby-version",
28-
"CHANGELOG.md",
29-
"Gemfile",
30-
"LICENSE.txt",
31-
"README.md",
32-
"Rakefile",
33-
"action_kit_rest.gemspec",
34-
"lib/action_kit_rest.rb",
35-
"lib/action_kit_rest/action.rb",
36-
"lib/action_kit_rest/actions/event_create_action.rb",
37-
"lib/action_kit_rest/actions/event_signup_action.rb",
38-
"lib/action_kit_rest/actions/unsubscribe_action.rb",
39-
"lib/action_kit_rest/allowed_user_field.rb",
40-
"lib/action_kit_rest/api.rb",
41-
"lib/action_kit_rest/base.rb",
42-
"lib/action_kit_rest/client.rb",
43-
"lib/action_kit_rest/event.rb",
44-
"lib/action_kit_rest/event_signup.rb",
45-
"lib/action_kit_rest/language.rb",
46-
"lib/action_kit_rest/list.rb",
47-
"lib/action_kit_rest/page.rb",
48-
"lib/action_kit_rest/pages/base.rb",
49-
"lib/action_kit_rest/pages/donation_page.rb",
50-
"lib/action_kit_rest/pages/event_campaign_page.rb",
51-
"lib/action_kit_rest/pages/import_page.rb",
52-
"lib/action_kit_rest/pages/signup_page.rb",
53-
"lib/action_kit_rest/pages/unsubscribe_page.rb",
54-
"lib/action_kit_rest/phone.rb",
55-
"lib/action_kit_rest/railties.rb",
56-
"lib/action_kit_rest/response/collection.rb",
57-
"lib/action_kit_rest/response/raise_error.rb",
58-
"lib/action_kit_rest/response/validation_error.rb",
59-
"lib/action_kit_rest/response/wrapper.rb",
60-
"lib/action_kit_rest/tag.rb",
61-
"lib/action_kit_rest/user.rb",
62-
"lib/action_kit_rest/version.rb",
63-
"spec/fixtures/action/event_create_action.json",
64-
"spec/fixtures/action/event_signup_action.json",
65-
"spec/fixtures/allowed_user_field/get.json",
66-
"spec/fixtures/allowed_user_field/list.json",
67-
"spec/fixtures/allowed_user_field/list_filtered.json",
68-
"spec/fixtures/error.json",
69-
"spec/fixtures/page/campaign.json",
70-
"spec/fixtures/page/collection.json",
71-
"spec/fixtures/page/find_campaign.json",
72-
"spec/fixtures/page/find_event_create.json",
73-
"spec/fixtures/page/find_event_signup.json",
74-
"spec/fixtures/page/object.json",
75-
"spec/fixtures/phone/object.json",
76-
"spec/fixtures/user/object_with_phones.json",
77-
"spec/fixtures/user/object_without_phones.json",
78-
"spec/lib/action_kit_rest/actions/event_create_action_spec.rb",
79-
"spec/lib/action_kit_rest/actions/event_signup_action_spec.rb",
80-
"spec/lib/action_kit_rest/allowed_user_field_spec.rb",
81-
"spec/lib/action_kit_rest/api_spec.rb",
82-
"spec/lib/action_kit_rest/logger_spec.rb",
83-
"spec/lib/action_kit_rest/page_spec.rb",
84-
"spec/lib/action_kit_rest/pages/event_campaign_page_spec.rb",
85-
"spec/lib/action_kit_rest/pages/import_page_spec.rb",
86-
"spec/lib/action_kit_rest/response/collection_spec.rb",
87-
"spec/lib/action_kit_rest/response/validation_error_spec.rb",
88-
"spec/lib/action_kit_rest/response/wrapper_spec.rb",
89-
"spec/lib/action_kit_rest/user_spec.rb",
90-
"spec/spec_helper.rb",
91-
"spec/support/shared_contexts/stub_logger.rb"
92-
]
93-
s.homepage = "http://github.com/controlshift/action_kit_rest".freeze
94-
s.licenses = ["MIT".freeze]
95-
s.rubygems_version = "3.4.10".freeze
96-
s.summary = "A wrapper for the ActionKit REST API".freeze
5+
Gem::Specification.new do |spec|
6+
spec.name = "action_kit_rest"
7+
spec.version = ActionKitRest::VERSION::STRING
8+
spec.authors = ["Nathan Woodhull", "Diego Marcet", "Grey Moore"]
9+
spec.email = ["systems@controlshiftlabs.com"]
9710

98-
s.specification_version = 4
11+
spec.summary = "A wrapper for the ActionKit REST API"
12+
spec.description = "Gem for interacting with the ActionKit API"
13+
spec.homepage = "https://github.com/controlshift/action_kit_rest"
14+
spec.license = "MIT"
15+
spec.required_ruby_version = ">= 3.0.0"
9916

100-
s.add_runtime_dependency(%q<vertebrae>.freeze, [">= 0.6.0"])
101-
s.add_development_dependency(%q<bundler>.freeze, [">= 2.0", "< 3.0"])
102-
s.add_development_dependency(%q<byebug>.freeze, [">= 0"])
103-
s.add_development_dependency(%q<em-http-request>.freeze, [">= 1.1.5", "< 2.0"])
104-
s.add_development_dependency(%q<em-synchrony>.freeze, [">= 1.0.6", "< 2.0"])
105-
s.add_development_dependency(%q<eventmachine>.freeze, [">= 1.2.5", "< 2.0"])
106-
s.add_development_dependency(%q<juwelier>.freeze, [">= 0"])
107-
s.add_development_dependency(%q<rspec>.freeze, ["~> 3.7"])
108-
s.add_development_dependency(%q<rubocop>.freeze, [">= 0"])
109-
s.add_development_dependency(%q<webmock>.freeze, ["~> 3.3"])
17+
spec.metadata["homepage_uri"] = spec.homepage
18+
spec.metadata["source_code_uri"] = spec.homepage
19+
spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/master/CHANGELOG.md"
20+
21+
# Specify which files should be added to the gem when it is released.
22+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23+
spec.files = Dir.chdir(__dir__) do
24+
`git ls-files -z`.split("\x0").reject do |f|
25+
(File.expand_path(f) == __FILE__) ||
26+
f.start_with?(*%w[bin/ spec/ .git .github .document .idea coverage/])
27+
end
28+
end
29+
spec.require_paths = ["lib"]
30+
31+
# Runtime dependencies
32+
spec.add_dependency "vertebrae", ">= 0.6.0"
33+
34+
# Development dependencies
35+
spec.add_development_dependency "bundler", ">= 2.0", "< 3.0"
36+
spec.add_development_dependency "byebug"
37+
spec.add_development_dependency "em-http-request", ">= 1.1.5", "< 2.0"
38+
spec.add_development_dependency "em-synchrony", ">= 1.0.6", "< 2.0"
39+
spec.add_development_dependency "eventmachine", ">= 1.2.5", "< 2.0"
40+
spec.add_development_dependency "rake"
41+
spec.add_development_dependency "rspec", "~> 3.7"
42+
spec.add_development_dependency "rubocop"
43+
spec.add_development_dependency "webmock", "~> 3.3"
11044
end
11145

lib/action_kit_rest/api.rb

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# frozen_string_literal: true
22

3+
require 'faraday/mashify'
4+
35
module ActionKitRest
46
class API < Vertebrae::API
57
def request(*args)
@@ -35,21 +37,32 @@ def default_options
3537
end
3638

3739
def setup
38-
connection.stack do |builder|
39-
builder.use Faraday::Request::Multipart
40-
builder.use Faraday::Request::UrlEncoded
40+
# Override the faraday connection to use ActionKitRest's custom error handler
41+
connection.faraday_connection = Faraday.new(connection.configuration.faraday_options) do |f|
4142
if connection.configuration.authenticated?
42-
builder.use Faraday::Request::BasicAuthentication, connection.configuration.username,
43-
connection.configuration.password
43+
f.request :authorization, :basic, connection.configuration.username, connection.configuration.password
4444
end
45+
f.request :multipart
46+
f.request :url_encoded
4547

46-
builder.use Faraday::Response::Logger if ENV['DEBUG']
48+
f.response :logger if ENV['DEBUG']
4749

48-
builder.use FaradayMiddleware::Mashify
49-
builder.use FaradayMiddleware::ParseJson
50+
unless initialisation_options[:raw]
51+
f.response :mashify
52+
f.response :json
53+
end
5054

51-
builder.use ActionKitRest::Response::RaiseError
52-
builder.adapter connection.configuration.adapter
55+
f.use ActionKitRest::Response::RaiseError
56+
57+
# Handle adapter registration - some adapters need to be required separately in Faraday 2.x
58+
adapter_name = connection.configuration.adapter
59+
begin
60+
f.adapter adapter_name
61+
rescue Faraday::Error => e
62+
# Fall back to default adapter if the requested one isn't available
63+
warn "Adapter #{adapter_name} not available (#{e.message}), falling back to default"
64+
f.adapter Faraday.default_adapter
65+
end
5366
end
5467
end
5568
end

lib/action_kit_rest/response/raise_error.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
module ActionKitRest
44
module Response
5-
class RaiseError < Faraday::Response::Middleware
5+
class RaiseError < Faraday::Middleware
66
def on_complete(response)
77
status_code = response[:status].to_i
88
if (400...600).include? status_code

lib/action_kit_rest/user.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def get(id)
1313
# (user.phones attribute includes the path for associated phones, not the data itself)
1414
if user.id.present? && user.phones.any?
1515
phones_list = client.phone.list(user: user.id)
16-
user.obj.phones = phones_list.obj.to_a
16+
user.obj.phones = phones_list.collection? ? phones_list.obj.to_a : phones_list.obj
1717
end
1818

1919
user

lib/action_kit_rest/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ module ActionKitRest
44
module VERSION
55
MAJOR = 0
66
MINOR = 4
7-
PATCH = 11
7+
PATCH = 12
88
BUILD = nil
99

1010
STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')

spec/lib/action_kit_rest/user_spec.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@
3838
let(:phone_body) { fixture('phone/object.json') }
3939

4040
it 'should include phones' do
41-
stub_get('phone/?user=1').to_return(body: phone_body, status: 200)
41+
stub_get('phone/?user=1').to_return(body: phone_body, status: 200,
42+
headers: { content_type: 'application/json; charset=utf-8' })
4243
expect(subject.user.get(1).phones.count).to eq 3
4344
expect(subject.user.get(1).phones.map(&:phone)).to match_array(%w[7755555555 7755555577 310-310-3310])
4445
end

0 commit comments

Comments
 (0)