From 2042abeaeeb2de559728511ec13ef925a8ee561b Mon Sep 17 00:00:00 2001 From: Leon Miller-Out Date: Thu, 9 Jan 2025 11:40:59 -0500 Subject: [PATCH 1/7] Let Rubocop autocorrect a couple of issues. --- lib/webhook_system/base_event.rb | 4 ++-- lib/webhook_system/subscription.rb | 6 ++---- test.db-shm | Bin 0 -> 32768 bytes test.db-wal | Bin 0 -> 288432 bytes 4 files changed, 4 insertions(+), 6 deletions(-) create mode 100644 test.db-shm create mode 100644 test.db-wal diff --git a/lib/webhook_system/base_event.rb b/lib/webhook_system/base_event.rb index f8cce27..7f10526 100644 --- a/lib/webhook_system/base_event.rb +++ b/lib/webhook_system/base_event.rb @@ -6,8 +6,8 @@ module WebhookSystem class BaseEvent include PhModel - def initialize(*args, &block) - super(*args, &block) + def initialize(...) + super @event_id = SecureRandom.uuid.freeze end diff --git a/lib/webhook_system/subscription.rb b/lib/webhook_system/subscription.rb index fba26bc..638cd70 100644 --- a/lib/webhook_system/subscription.rb +++ b/lib/webhook_system/subscription.rb @@ -53,10 +53,8 @@ def topic_names=(new_topics) new_topics.reject!(&:blank?) add_topics = new_topics - topic_names - new_topics_attributes = [] - - topics.each do |topic| - new_topics_attributes << { + new_topics_attributes = topics.map do |topic| + { id: topic.id, name: topic.name, _destroy: new_topics.exclude?(topic.name), diff --git a/test.db-shm b/test.db-shm new file mode 100644 index 0000000000000000000000000000000000000000..b37139349cf4bcb5787cbea8e9fc884a2ec1160d GIT binary patch literal 32768 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 Date: Thu, 9 Jan 2025 12:17:40 -0500 Subject: [PATCH 2/7] Specify version constraint for sqlite3 in Rails 7.0 --- gemfiles/rails_7.0.gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gemfiles/rails_7.0.gemfile b/gemfiles/rails_7.0.gemfile index f32a1ff..f395ee7 100644 --- a/gemfiles/rails_7.0.gemfile +++ b/gemfiles/rails_7.0.gemfile @@ -3,6 +3,6 @@ source "https://rubygems.org" gem "rails", "~> 7.0.2" -gem "sqlite3" +gem "sqlite3", "~> 1.4.0" gemspec path: "../" From fe5155d8ac13214e7375759e39dc09ad98edc6f1 Mon Sep 17 00:00:00 2001 From: Leon Miller-Out Date: Thu, 9 Jan 2025 12:22:50 -0500 Subject: [PATCH 3/7] require base64 in Encoder (because Rails 7.0 with Ruby 3+ doesn't require it automatically) --- lib/webhook_system/encoder.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/webhook_system/encoder.rb b/lib/webhook_system/encoder.rb index 75837cd..cb1362a 100644 --- a/lib/webhook_system/encoder.rb +++ b/lib/webhook_system/encoder.rb @@ -1,5 +1,7 @@ # frozen_string_literal: true +require 'base64' + module WebhookSystem # Class in charge of encoding and decoding encrypted payload From 539991aec7b015a8b0635a15a20e91b398d81d8a Mon Sep 17 00:00:00 2001 From: Leon Miller-Out Date: Thu, 9 Jan 2025 11:29:16 -0500 Subject: [PATCH 4/7] Fix deprecation in `serialize` call --- lib/webhook_system/event_log.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/webhook_system/event_log.rb b/lib/webhook_system/event_log.rb index 192084a..9fa0a82 100644 --- a/lib/webhook_system/event_log.rb +++ b/lib/webhook_system/event_log.rb @@ -15,8 +15,8 @@ class EventLog < ActiveRecord::Base validates :event_name, presence: true validates :status, presence: true - serialize :request, JSON - serialize :response, JSON + serialize :request, coder: JSON + serialize :response, coder: JSON def self.construct(subscription, event, request, response) request_info = { From 4a80eb06d531be3e942961e3f008417789b9d43d Mon Sep 17 00:00:00 2001 From: Leon Miller-Out Date: Thu, 9 Jan 2025 13:20:33 -0500 Subject: [PATCH 5/7] Drop support for older Rails versions that are incompatible with the new syntax for ActiveRecord's `serialize` --- .github/workflows/ci.yml | 8 -------- gemfiles/rails_5.0.gemfile | 8 -------- gemfiles/rails_5.1.gemfile | 8 -------- gemfiles/rails_5.2.gemfile | 8 -------- gemfiles/rails_6.0.gemfile | 8 -------- webhook_system.gemspec | 7 ++++--- 6 files changed, 4 insertions(+), 43 deletions(-) delete mode 100644 gemfiles/rails_5.0.gemfile delete mode 100644 gemfiles/rails_5.1.gemfile delete mode 100644 gemfiles/rails_5.2.gemfile delete mode 100644 gemfiles/rails_6.0.gemfile diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c9a57e1..a95cced 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,14 +26,6 @@ jobs: ruby: 2.7 - gemfile: rails_6.1 ruby: 2.7 - - gemfile: rails_6.0 - ruby: 2.7 - - gemfile: rails_5.2 - ruby: 2.7 - - gemfile: rails_5.1 - ruby: 2.7 - - gemfile: rails_5.0 - ruby: 2.7 env: BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile diff --git a/gemfiles/rails_5.0.gemfile b/gemfiles/rails_5.0.gemfile deleted file mode 100644 index fe17ba9..0000000 --- a/gemfiles/rails_5.0.gemfile +++ /dev/null @@ -1,8 +0,0 @@ -# frozen_string_literal: true - -source "https://rubygems.org" - -gem "rails", "~> 5.0.7" -gem "sqlite3", "~> 1.3.6" - -gemspec path: "../" diff --git a/gemfiles/rails_5.1.gemfile b/gemfiles/rails_5.1.gemfile deleted file mode 100644 index 16067aa..0000000 --- a/gemfiles/rails_5.1.gemfile +++ /dev/null @@ -1,8 +0,0 @@ -# frozen_string_literal: true - -source "https://rubygems.org" - -gem "rails", "~> 5.1.7" -gem "sqlite3", "~> 1.3.6" - -gemspec path: "../" diff --git a/gemfiles/rails_5.2.gemfile b/gemfiles/rails_5.2.gemfile deleted file mode 100644 index 3b10fc4..0000000 --- a/gemfiles/rails_5.2.gemfile +++ /dev/null @@ -1,8 +0,0 @@ -# frozen_string_literal: true - -source "https://rubygems.org" - -gem "rails", "~> 5.2.6" -gem "sqlite3", "~> 1.4.1" - -gemspec path: "../" diff --git a/gemfiles/rails_6.0.gemfile b/gemfiles/rails_6.0.gemfile deleted file mode 100644 index 2a3054b..0000000 --- a/gemfiles/rails_6.0.gemfile +++ /dev/null @@ -1,8 +0,0 @@ -# frozen_string_literal: true - -source "https://rubygems.org" - -gem "rails", "~> 6.0.4" -gem "sqlite3" - -gemspec path: "../" diff --git a/webhook_system.gemspec b/webhook_system.gemspec index b932e9b..5fde86e 100644 --- a/webhook_system.gemspec +++ b/webhook_system.gemspec @@ -37,9 +37,10 @@ Gem::Specification.new do |gem| } gem.required_ruby_version = '> 2.7.0' - gem.add_runtime_dependency 'activesupport', '> 5.0', '< 7.2' - gem.add_runtime_dependency 'activerecord', '> 5.0', '< 7.2' - gem.add_runtime_dependency 'activejob', '> 5.0', '< 7.2' + gem.add_runtime_dependency 'activemodel', '>= 6.1', '< 7.2' + gem.add_runtime_dependency 'activesupport', '>= 6.1', '< 7.2' + gem.add_runtime_dependency 'activerecord', '>= 6.1', '< 7.2' + gem.add_runtime_dependency 'activejob', '>= 6.1', '< 7.2' gem.add_runtime_dependency 'faraday', '> 0.9' gem.add_runtime_dependency 'faraday-encoding', '>= 0.0.2', '< 1.0' gem.add_runtime_dependency 'ph_model' From 9a0d6f017f7a8b81f4782b7e66314bf4d27ca650 Mon Sep 17 00:00:00 2001 From: Leon Miller-Out Date: Thu, 9 Jan 2025 13:53:15 -0500 Subject: [PATCH 6/7] Add Rails 7.2 support. Drop ph_model gem, because we can accomplish everything we need to with ActiveModel --- gemfiles/rails_7.1.gemfile | 1 - lib/webhook_system.rb | 1 - lib/webhook_system/base_event.rb | 8 +++++++- spec/event_spec.rb | 9 ++++++++- spec/integration_spec.rb | 2 +- webhook_system.gemspec | 9 ++++----- 6 files changed, 20 insertions(+), 10 deletions(-) diff --git a/gemfiles/rails_7.1.gemfile b/gemfiles/rails_7.1.gemfile index 0f1d346..1b7beb0 100644 --- a/gemfiles/rails_7.1.gemfile +++ b/gemfiles/rails_7.1.gemfile @@ -2,7 +2,6 @@ source "https://rubygems.org" -gem "active_attr", "~> 0.16" # git: "https://github.com/mathieujobin/active_attr", branch: "rails-7.1-support" gem "rails", "~> 7.1.1" gem "sqlite3" diff --git a/lib/webhook_system.rb b/lib/webhook_system.rb index 9d2ef4d..79c15fe 100644 --- a/lib/webhook_system.rb +++ b/lib/webhook_system.rb @@ -3,7 +3,6 @@ require 'active_support/all' require 'active_record' require 'active_job' -require 'ph_model' require 'validate_url' require 'faraday' require 'faraday-encoding' diff --git a/lib/webhook_system/base_event.rb b/lib/webhook_system/base_event.rb index 7f10526..a906eb7 100644 --- a/lib/webhook_system/base_event.rb +++ b/lib/webhook_system/base_event.rb @@ -4,7 +4,9 @@ module WebhookSystem # This is the class meant to be used as the base class for any Events sent through the Webhook system class BaseEvent - include PhModel + include ActiveModel::Attributes + include ActiveModel::AttributeAssignment + include ActiveModel::Validations def initialize(...) super @@ -39,6 +41,10 @@ def as_json result.deep_stringify_keys end + def self.build(attrs) + new.tap { |instance| instance.assign_attributes(attrs) } + end + def self.key_is_reserved?(key) key.to_s.in? %w[event event_id] end diff --git a/spec/event_spec.rb b/spec/event_spec.rb index da6139b..3157f8e 100644 --- a/spec/event_spec.rb +++ b/spec/event_spec.rb @@ -5,13 +5,20 @@ describe WebhookSystem, aggregate_failures: true do let(:widget_class) do Class.new do - include PhModel + include ActiveModel::Attributes + include ActiveModel::AttributeAssignment + include ActiveModel::Validations + attribute :foo attribute :bar def as_json { foo: foo, bar: bar } end + + def self.build(attrs) + new.tap { |instance| instance.assign_attributes(attrs) } + end end end diff --git a/spec/integration_spec.rb b/spec/integration_spec.rb index d41f5b8..0f8c279 100644 --- a/spec/integration_spec.rb +++ b/spec/integration_spec.rb @@ -31,7 +31,7 @@ def payload_attributes end end - let(:event) { event_class.build(name: 'John', age: 21) } + let(:event) { event_class.new.tap { |e| e.assign_attributes(name: 'John', age: 21) } } let(:expected_payload) do { diff --git a/webhook_system.gemspec b/webhook_system.gemspec index 5fde86e..c0ebb5c 100644 --- a/webhook_system.gemspec +++ b/webhook_system.gemspec @@ -37,13 +37,12 @@ Gem::Specification.new do |gem| } gem.required_ruby_version = '> 2.7.0' - gem.add_runtime_dependency 'activemodel', '>= 6.1', '< 7.2' - gem.add_runtime_dependency 'activesupport', '>= 6.1', '< 7.2' - gem.add_runtime_dependency 'activerecord', '>= 6.1', '< 7.2' - gem.add_runtime_dependency 'activejob', '>= 6.1', '< 7.2' + gem.add_runtime_dependency 'activemodel', '>= 6.1', '< 7.3' + gem.add_runtime_dependency 'activesupport', '>= 6.1', '< 7.3' + gem.add_runtime_dependency 'activerecord', '>= 6.1', '< 7.3' + gem.add_runtime_dependency 'activejob', '>= 6.1', '< 7.3' gem.add_runtime_dependency 'faraday', '> 0.9' gem.add_runtime_dependency 'faraday-encoding', '>= 0.0.2', '< 1.0' - gem.add_runtime_dependency 'ph_model' gem.add_runtime_dependency 'validate_url', '~> 1.0' gem.add_development_dependency 'bundler', '> 1.17', '< 2.6' From 272b24cc11dc1af2b1e5ded5b064e524afefc845 Mon Sep 17 00:00:00 2001 From: Leon Miller-Out Date: Thu, 9 Jan 2025 16:18:06 -0500 Subject: [PATCH 7/7] Add support for Rails 8.0 --- .github/workflows/ci.yml | 8 ++++++-- gemfiles/rails_8.0.gemfile | 8 ++++++++ webhook_system.gemspec | 8 ++++---- 3 files changed, 18 insertions(+), 6 deletions(-) create mode 100644 gemfiles/rails_8.0.gemfile diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a95cced..d5d714f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,9 +17,13 @@ jobs: strategy: fail-fast: false matrix: - gemfile: ['rails_7.0', 'rails_7.1'] - ruby: [3.3, 3.2, 3.1] + gemfile: ['rails_7.0', 'rails_7.1', 'rails_8.0'] + ruby: [3.3, 3.2] include: + - gemfile: rails_7.1 + ruby: '3.1' + - gemfile: rails_7.0 + ruby: '3.1' - gemfile: rails_7.0 ruby: '3.0' - gemfile: rails_7.0 diff --git a/gemfiles/rails_8.0.gemfile b/gemfiles/rails_8.0.gemfile new file mode 100644 index 0000000..a1651b2 --- /dev/null +++ b/gemfiles/rails_8.0.gemfile @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem "rails", "~> 8.0.1" +gem "sqlite3" + +gemspec path: "../" diff --git a/webhook_system.gemspec b/webhook_system.gemspec index c0ebb5c..71d3de4 100644 --- a/webhook_system.gemspec +++ b/webhook_system.gemspec @@ -37,10 +37,10 @@ Gem::Specification.new do |gem| } gem.required_ruby_version = '> 2.7.0' - gem.add_runtime_dependency 'activemodel', '>= 6.1', '< 7.3' - gem.add_runtime_dependency 'activesupport', '>= 6.1', '< 7.3' - gem.add_runtime_dependency 'activerecord', '>= 6.1', '< 7.3' - gem.add_runtime_dependency 'activejob', '>= 6.1', '< 7.3' + gem.add_runtime_dependency 'activemodel', '>= 6.1', '< 8.1' + gem.add_runtime_dependency 'activesupport', '>= 6.1', '< 8.1' + gem.add_runtime_dependency 'activerecord', '>= 6.1', '< 8.1' + gem.add_runtime_dependency 'activejob', '>= 6.1', '< 8.1' gem.add_runtime_dependency 'faraday', '> 0.9' gem.add_runtime_dependency 'faraday-encoding', '>= 0.0.2', '< 1.0' gem.add_runtime_dependency 'validate_url', '~> 1.0'