external_services 0.5.1 → 0.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 696239dd2a5f6a780daf507059a77dc5542b41bb51d6a9b761694fd8decee742
4
- data.tar.gz: c38e40e9575e4a1a0ffa2ee6f9b3a9996a5ea29876ce9fa1f5ac7d2d669653f4
3
+ metadata.gz: '08f5895f6fa74286ed5c60a14c9840aa765bbf4179070311293ca8aca9cdc5b7'
4
+ data.tar.gz: 8ebfb1bd40b695f3039e692ea02546e9ff60b729a25aa0869f51c120e8ed2953
5
5
  SHA512:
6
- metadata.gz: 0f9a225769174988072d1853afa51332ec96e75ec8cb8d0c6269d113efeeb7c20d55c68b5fe5b8fcd29b405d697568d708fae4c91ac0bc54b9d8b9da718eb2ce
7
- data.tar.gz: bca745948cf48325cba15d5edf9e5635346e06af0bfe62e0050a665f2c7128c69bc5256807573b7256b03cf3d98a59d5a8682635a32049de202f9131f7549010
6
+ metadata.gz: 988c94bd9e499f7c611f41e3d76ae763c95959d414639b990921d71b6a17f58beb167319f797425200e42aecb0da9c325787c5155589b5e5c93993acde16c134
7
+ data.tar.gz: bc1dbcff05bc31f0cebc4cb85c703e487bdea514a2c8a21fd79677ce70eb07e0d6ef1044642a09e30e1b1eeb028cf39b1d6b724f844636f99b31248a26feb281
data/.rubocop.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.2
2
+ TargetRubyVersion: 2.7
3
3
  Exclude:
4
4
  - 'lib/generators/templates/**/*'
5
5
  - 'spec/dummy/**/*'
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in external_services.gemspec
@@ -6,12 +8,13 @@ gemspec
6
8
  gem 'rake', '~> 13.0'
7
9
  gem 'sqlite3'
8
10
 
11
+ gem 'net-smtp', require: false # HACK: for pre 7.0.1 rails and 3.1 ruby
9
12
  gem 'overcommit'
10
13
  gem 'rubocop', '~> 1.0', require: false
11
14
  gem 'rubocop-rspec'
12
- gem 'net-smtp', require: false # hack for pre 7.0.1 rails and 3.1 ruby
13
15
 
14
- gem 'pry-rails'
16
+ gem 'pry', '>= 0.14'
17
+ gem 'pry-rails', '~> 0.3.9'
15
18
 
16
19
  gem 'factory_bot_rails'
17
20
  gem 'rspec-rails'
data/Gemfile.lock CHANGED
@@ -1,89 +1,108 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- external_services (0.5.1)
4
+ external_services (0.5.4)
5
5
  faraday (>= 1.4, < 2)
6
6
  faraday_middleware (>= 1.0, < 2)
7
- rails (>= 4.2.5, < 7)
7
+ rails (>= 4.2.5, < 8)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- actioncable (6.1.6.1)
13
- actionpack (= 6.1.6.1)
14
- activesupport (= 6.1.6.1)
12
+ actioncable (7.1.3.3)
13
+ actionpack (= 7.1.3.3)
14
+ activesupport (= 7.1.3.3)
15
15
  nio4r (~> 2.0)
16
16
  websocket-driver (>= 0.6.1)
17
- actionmailbox (6.1.6.1)
18
- actionpack (= 6.1.6.1)
19
- activejob (= 6.1.6.1)
20
- activerecord (= 6.1.6.1)
21
- activestorage (= 6.1.6.1)
22
- activesupport (= 6.1.6.1)
17
+ zeitwerk (~> 2.6)
18
+ actionmailbox (7.1.3.3)
19
+ actionpack (= 7.1.3.3)
20
+ activejob (= 7.1.3.3)
21
+ activerecord (= 7.1.3.3)
22
+ activestorage (= 7.1.3.3)
23
+ activesupport (= 7.1.3.3)
23
24
  mail (>= 2.7.1)
24
- actionmailer (6.1.6.1)
25
- actionpack (= 6.1.6.1)
26
- actionview (= 6.1.6.1)
27
- activejob (= 6.1.6.1)
28
- activesupport (= 6.1.6.1)
25
+ net-imap
26
+ net-pop
27
+ net-smtp
28
+ actionmailer (7.1.3.3)
29
+ actionpack (= 7.1.3.3)
30
+ actionview (= 7.1.3.3)
31
+ activejob (= 7.1.3.3)
32
+ activesupport (= 7.1.3.3)
29
33
  mail (~> 2.5, >= 2.5.4)
30
- rails-dom-testing (~> 2.0)
31
- actionpack (6.1.6.1)
32
- actionview (= 6.1.6.1)
33
- activesupport (= 6.1.6.1)
34
- rack (~> 2.0, >= 2.0.9)
34
+ net-imap
35
+ net-pop
36
+ net-smtp
37
+ rails-dom-testing (~> 2.2)
38
+ actionpack (7.1.3.3)
39
+ actionview (= 7.1.3.3)
40
+ activesupport (= 7.1.3.3)
41
+ nokogiri (>= 1.8.5)
42
+ racc
43
+ rack (>= 2.2.4)
44
+ rack-session (>= 1.0.1)
35
45
  rack-test (>= 0.6.3)
36
- rails-dom-testing (~> 2.0)
37
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
38
- actiontext (6.1.6.1)
39
- actionpack (= 6.1.6.1)
40
- activerecord (= 6.1.6.1)
41
- activestorage (= 6.1.6.1)
42
- activesupport (= 6.1.6.1)
46
+ rails-dom-testing (~> 2.2)
47
+ rails-html-sanitizer (~> 1.6)
48
+ actiontext (7.1.3.3)
49
+ actionpack (= 7.1.3.3)
50
+ activerecord (= 7.1.3.3)
51
+ activestorage (= 7.1.3.3)
52
+ activesupport (= 7.1.3.3)
53
+ globalid (>= 0.6.0)
43
54
  nokogiri (>= 1.8.5)
44
- actionview (6.1.6.1)
45
- activesupport (= 6.1.6.1)
55
+ actionview (7.1.3.3)
56
+ activesupport (= 7.1.3.3)
46
57
  builder (~> 3.1)
47
- erubi (~> 1.4)
48
- rails-dom-testing (~> 2.0)
49
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
50
- activejob (6.1.6.1)
51
- activesupport (= 6.1.6.1)
58
+ erubi (~> 1.11)
59
+ rails-dom-testing (~> 2.2)
60
+ rails-html-sanitizer (~> 1.6)
61
+ activejob (7.1.3.3)
62
+ activesupport (= 7.1.3.3)
52
63
  globalid (>= 0.3.6)
53
- activemodel (6.1.6.1)
54
- activesupport (= 6.1.6.1)
55
- activerecord (6.1.6.1)
56
- activemodel (= 6.1.6.1)
57
- activesupport (= 6.1.6.1)
58
- activestorage (6.1.6.1)
59
- actionpack (= 6.1.6.1)
60
- activejob (= 6.1.6.1)
61
- activerecord (= 6.1.6.1)
62
- activesupport (= 6.1.6.1)
64
+ activemodel (7.1.3.3)
65
+ activesupport (= 7.1.3.3)
66
+ activerecord (7.1.3.3)
67
+ activemodel (= 7.1.3.3)
68
+ activesupport (= 7.1.3.3)
69
+ timeout (>= 0.4.0)
70
+ activestorage (7.1.3.3)
71
+ actionpack (= 7.1.3.3)
72
+ activejob (= 7.1.3.3)
73
+ activerecord (= 7.1.3.3)
74
+ activesupport (= 7.1.3.3)
63
75
  marcel (~> 1.0)
64
- mini_mime (>= 1.1.0)
65
- activesupport (6.1.6.1)
76
+ activesupport (7.1.3.3)
77
+ base64
78
+ bigdecimal
66
79
  concurrent-ruby (~> 1.0, >= 1.0.2)
80
+ connection_pool (>= 2.2.5)
81
+ drb
67
82
  i18n (>= 1.6, < 2)
68
83
  minitest (>= 5.1)
84
+ mutex_m
69
85
  tzinfo (~> 2.0)
70
- zeitwerk (~> 2.3)
71
86
  ast (2.4.2)
87
+ base64 (0.2.0)
88
+ bigdecimal (3.1.8)
72
89
  builder (3.2.4)
73
90
  childprocess (0.9.0)
74
91
  ffi (~> 1.0, >= 1.0.11)
75
- coderay (1.1.2)
76
- concurrent-ruby (1.1.10)
92
+ coderay (1.1.3)
93
+ concurrent-ruby (1.2.3)
94
+ connection_pool (2.4.1)
77
95
  crass (1.0.6)
96
+ date (3.3.4)
78
97
  diff-lcs (1.4.4)
79
- digest (3.1.0)
80
- erubi (1.10.0)
98
+ drb (2.2.1)
99
+ erubi (1.12.0)
81
100
  factory_bot (4.11.1)
82
101
  activesupport (>= 3.0.0)
83
102
  factory_bot_rails (4.11.1)
84
103
  factory_bot (~> 4.11.1)
85
104
  railties (>= 3.0.0)
86
- faraday (1.10.2)
105
+ faraday (1.10.3)
87
106
  faraday-em_http (~> 1.0)
88
107
  faraday-em_synchrony (~> 1.0)
89
108
  faraday-excon (~> 1.1)
@@ -109,31 +128,42 @@ GEM
109
128
  faraday_middleware (1.2.0)
110
129
  faraday (~> 1.0)
111
130
  ffi (1.15.5)
112
- globalid (1.0.0)
113
- activesupport (>= 5.0)
114
- i18n (1.11.0)
131
+ globalid (1.2.1)
132
+ activesupport (>= 6.1)
133
+ i18n (1.14.5)
115
134
  concurrent-ruby (~> 1.0)
116
135
  iniparse (1.4.4)
117
- loofah (2.18.0)
136
+ io-console (0.7.2)
137
+ irb (1.13.1)
138
+ rdoc (>= 4.0.0)
139
+ reline (>= 0.4.2)
140
+ loofah (2.22.0)
118
141
  crass (~> 1.0.2)
119
- nokogiri (>= 1.5.9)
120
- mail (2.7.1)
142
+ nokogiri (>= 1.12.0)
143
+ mail (2.8.1)
121
144
  mini_mime (>= 0.1.1)
122
- marcel (1.0.2)
123
- method_source (0.9.2)
124
- mini_mime (1.1.2)
125
- mini_portile2 (2.8.0)
126
- minitest (5.16.2)
127
- multipart-post (2.2.3)
128
- net-protocol (0.1.3)
129
- timeout
130
- net-smtp (0.3.1)
131
- digest
145
+ net-imap
146
+ net-pop
147
+ net-smtp
148
+ marcel (1.0.4)
149
+ method_source (1.1.0)
150
+ mini_mime (1.1.5)
151
+ mini_portile2 (2.8.6)
152
+ minitest (5.23.1)
153
+ multipart-post (2.3.0)
154
+ mutex_m (0.2.0)
155
+ net-imap (0.4.11)
156
+ date
132
157
  net-protocol
158
+ net-pop (0.1.2)
159
+ net-protocol
160
+ net-protocol (0.2.2)
133
161
  timeout
134
- nio4r (2.5.8)
135
- nokogiri (1.13.7)
136
- mini_portile2 (~> 2.8.0)
162
+ net-smtp (0.5.0)
163
+ net-protocol
164
+ nio4r (2.7.3)
165
+ nokogiri (1.16.5)
166
+ mini_portile2 (~> 2.8.2)
137
167
  racc (~> 1.4)
138
168
  overcommit (0.46.0)
139
169
  childprocess (~> 0.6, >= 0.6.3)
@@ -141,44 +171,58 @@ GEM
141
171
  parallel (1.22.1)
142
172
  parser (3.1.2.0)
143
173
  ast (~> 2.4.1)
144
- pry (0.11.3)
145
- coderay (~> 1.1.0)
146
- method_source (~> 0.9.0)
147
- pry-rails (0.3.6)
174
+ pry (0.14.2)
175
+ coderay (~> 1.1)
176
+ method_source (~> 1.0)
177
+ pry-rails (0.3.9)
148
178
  pry (>= 0.10.4)
149
- racc (1.6.0)
150
- rack (2.2.4)
151
- rack-test (2.0.2)
179
+ psych (5.1.2)
180
+ stringio
181
+ racc (1.8.0)
182
+ rack (3.0.11)
183
+ rack-session (2.0.0)
184
+ rack (>= 3.0.0)
185
+ rack-test (2.1.0)
152
186
  rack (>= 1.3)
153
- rails (6.1.6.1)
154
- actioncable (= 6.1.6.1)
155
- actionmailbox (= 6.1.6.1)
156
- actionmailer (= 6.1.6.1)
157
- actionpack (= 6.1.6.1)
158
- actiontext (= 6.1.6.1)
159
- actionview (= 6.1.6.1)
160
- activejob (= 6.1.6.1)
161
- activemodel (= 6.1.6.1)
162
- activerecord (= 6.1.6.1)
163
- activestorage (= 6.1.6.1)
164
- activesupport (= 6.1.6.1)
187
+ rackup (2.1.0)
188
+ rack (>= 3)
189
+ webrick (~> 1.8)
190
+ rails (7.1.3.3)
191
+ actioncable (= 7.1.3.3)
192
+ actionmailbox (= 7.1.3.3)
193
+ actionmailer (= 7.1.3.3)
194
+ actionpack (= 7.1.3.3)
195
+ actiontext (= 7.1.3.3)
196
+ actionview (= 7.1.3.3)
197
+ activejob (= 7.1.3.3)
198
+ activemodel (= 7.1.3.3)
199
+ activerecord (= 7.1.3.3)
200
+ activestorage (= 7.1.3.3)
201
+ activesupport (= 7.1.3.3)
165
202
  bundler (>= 1.15.0)
166
- railties (= 6.1.6.1)
167
- sprockets-rails (>= 2.0.0)
168
- rails-dom-testing (2.0.3)
169
- activesupport (>= 4.2.0)
203
+ railties (= 7.1.3.3)
204
+ rails-dom-testing (2.2.0)
205
+ activesupport (>= 5.0.0)
206
+ minitest
170
207
  nokogiri (>= 1.6)
171
- rails-html-sanitizer (1.4.3)
172
- loofah (~> 2.3)
173
- railties (6.1.6.1)
174
- actionpack (= 6.1.6.1)
175
- activesupport (= 6.1.6.1)
176
- method_source
208
+ rails-html-sanitizer (1.6.0)
209
+ loofah (~> 2.21)
210
+ nokogiri (~> 1.14)
211
+ railties (7.1.3.3)
212
+ actionpack (= 7.1.3.3)
213
+ activesupport (= 7.1.3.3)
214
+ irb
215
+ rackup (>= 1.0.0)
177
216
  rake (>= 12.2)
178
- thor (~> 1.0)
217
+ thor (~> 1.0, >= 1.2.2)
218
+ zeitwerk (~> 2.6)
179
219
  rainbow (3.1.1)
180
- rake (13.0.3)
220
+ rake (13.2.1)
221
+ rdoc (6.6.3.1)
222
+ psych (>= 4.0.0)
181
223
  regexp_parser (2.4.0)
224
+ reline (0.5.7)
225
+ io-console (~> 0.5)
182
226
  rexml (3.2.5)
183
227
  rspec-core (3.10.1)
184
228
  rspec-support (~> 3.10.0)
@@ -212,23 +256,18 @@ GEM
212
256
  rubocop (>= 0.58.0)
213
257
  ruby-progressbar (1.11.0)
214
258
  ruby2_keywords (0.0.5)
215
- sprockets (4.1.1)
216
- concurrent-ruby (~> 1.0)
217
- rack (> 1, < 3)
218
- sprockets-rails (3.4.2)
219
- actionpack (>= 5.2)
220
- activesupport (>= 5.2)
221
- sprockets (>= 3.0.0)
222
259
  sqlite3 (1.4.2)
223
- thor (1.2.1)
224
- timeout (0.2.0)
225
- tzinfo (2.0.4)
260
+ stringio (3.1.0)
261
+ thor (1.3.1)
262
+ timeout (0.4.1)
263
+ tzinfo (2.0.6)
226
264
  concurrent-ruby (~> 1.0)
227
265
  unicode-display_width (2.1.0)
228
- websocket-driver (0.7.5)
266
+ webrick (1.8.1)
267
+ websocket-driver (0.7.6)
229
268
  websocket-extensions (>= 0.1.0)
230
269
  websocket-extensions (0.1.5)
231
- zeitwerk (2.6.0)
270
+ zeitwerk (2.6.14)
232
271
 
233
272
  PLATFORMS
234
273
  ruby
@@ -238,7 +277,8 @@ DEPENDENCIES
238
277
  factory_bot_rails
239
278
  net-smtp
240
279
  overcommit
241
- pry-rails
280
+ pry (>= 0.14)
281
+ pry-rails (~> 0.3.9)
242
282
  rake (~> 13.0)
243
283
  rspec-rails
244
284
  rubocop (~> 1.0)
@@ -246,4 +286,4 @@ DEPENDENCIES
246
286
  sqlite3
247
287
 
248
288
  BUNDLED WITH
249
- 2.3.14
289
+ 2.5.9
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  begin
2
4
  require 'bundler/setup'
3
5
  rescue LoadError
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ExternalServices
2
4
  class ApiJob < ActiveJob::Base
3
5
  queue_as :default
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ExternalServices
2
4
  module Action
3
5
  extend ActiveSupport::Concern
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ExternalServices
2
4
  class ApiAction < ::ActiveRecord::Base
3
5
  include ExternalServices::Action
4
6
 
5
- MAX_ACTION_AGE = ENV.fetch('EXTERNAL_SERVICES_MAX_ACTION_AGE') { '90' }.to_i.days
7
+ MAX_ACTION_AGE = ENV.fetch('EXTERNAL_SERVICES_MAX_ACTION_AGE', '90').to_i.days
6
8
 
7
9
  attr_accessor :async
8
10
 
@@ -13,8 +15,8 @@ module ExternalServices
13
15
  validates :initiator_id, :initiator_type, :method, :path, :queue, presence: true
14
16
  validate :path_format_correctness
15
17
 
16
- serialize :data, JSON
17
- serialize :options, JSON
18
+ serialize :data, coder: JSON
19
+ serialize :options, coder: JSON
18
20
 
19
21
  scope :to_create, ->(obj) { where(initiator: obj, method: :post) }
20
22
 
@@ -90,6 +92,7 @@ module ExternalServices
90
92
 
91
93
  def create_or_update(*args)
92
94
  return true unless async
95
+
93
96
  super
94
97
  end
95
98
  end
@@ -1,13 +1,15 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ExternalServices
2
4
  class Service < ::ActiveRecord::Base
3
5
  self.table_name = :external_services
4
6
 
5
7
  belongs_to :subject, polymorphic: true
6
- serialize :extra_data, JSON
8
+ serialize :extra_data, coder: JSON
7
9
 
8
10
  after_update :on_first_sync, if: proc { # Rails 5.1+ support
9
- (respond_to?(:saved_change_to_external_id?) ? saved_change_to_external_id? : external_id_changed? ) &&
10
- (respond_to?(:external_id_before_last_save) ? external_id_before_last_save : external_id_was).nil?
11
+ (respond_to?(:saved_change_to_external_id?) ? saved_change_to_external_id? : external_id_changed?) &&
12
+ (respond_to?(:external_id_before_last_save) ? external_id_before_last_save : external_id_was).nil?
11
13
  }
12
14
 
13
15
  def self.to_sym
@@ -22,6 +24,7 @@ module ExternalServices
22
24
  def on_subject_update(subj)
23
25
  method = subj.send("#{api_name}_id").present? ? :put : :post
24
26
  return true if (subj.respond_to?(:became_archived?) && subj.became_archived?) && method == :post
27
+
25
28
  subj.send("#{api_name}_api_action", method)
26
29
  end
27
30
 
data/bin/rails CHANGED
@@ -1,12 +1,14 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
2
4
  # This command will automatically be run when you run "rails" with Rails gems
3
5
  # installed from the root of your application.
4
6
 
5
- ENGINE_ROOT = File.expand_path('../..', __FILE__)
6
- ENGINE_PATH = File.expand_path('../../lib/external_services/engine', __FILE__)
7
+ ENGINE_ROOT = File.expand_path('..', __dir__)
8
+ ENGINE_PATH = File.expand_path('../lib/external_services/engine', __dir__)
7
9
 
8
10
  # Set up gems listed in the Gemfile.
9
- ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
11
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
10
12
  require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
11
13
 
12
14
  require 'rails/all'
@@ -1,6 +1,6 @@
1
- lib = File.expand_path('lib', __dir__)
2
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require 'external_services/version'
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'lib/external_services/version'
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'external_services'
@@ -22,7 +22,9 @@ Gem::Specification.new do |spec|
22
22
  And there is a sidekiq queue clean function, you should use it on Sidekiq start instead of cleaning all Redis db.
23
23
  MSG
24
24
 
25
+ spec.required_ruby_version = '>= 2.7'
26
+
25
27
  spec.add_dependency 'faraday', '>= 1.4', '< 2'
26
28
  spec.add_dependency 'faraday_middleware', '>= 1.0', '< 2'
27
- spec.add_dependency 'rails', ['>= 4.2.5', '< 7']
29
+ spec.add_dependency 'rails', '>= 4.2.5', '< 8'
28
30
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ExternalServices
2
4
  module ActiveRecord
3
5
  module HasExternalService
@@ -24,13 +26,11 @@ module ExternalServices
24
26
  extend service_class::SubjectClassMethods if defined? service_class::SubjectClassMethods
25
27
  include service_class::SubjectMethods if defined? service_class::SubjectMethods
26
28
 
27
- # rubocop:disable Lint/HandleExceptions
28
29
  begin
29
30
  service_module = const_get(name.to_s.camelize, false)
30
31
  include service_module
31
32
  rescue NameError
32
33
  end
33
- # rubocop:enable Lint/HandleExceptions
34
34
  end
35
35
 
36
36
  def includes_external_services
@@ -106,7 +106,7 @@ module ExternalServices
106
106
  before_destroy :halt_on_external_services_syncing
107
107
  end
108
108
 
109
- after_save :"#{name}_on_create", if: proc { # Rails 5.1+ support
109
+ after_save :"#{name}_on_create", if: proc { # Rails 5.1+ support
110
110
  respond_to?(:saved_change_to_id?) ? saved_change_to_id? : id_changed?
111
111
  }
112
112
 
@@ -120,7 +120,6 @@ module ExternalServices
120
120
  define_method :"#{name}_on_create" do
121
121
  public_send(service_assoc).on_subject_create(self) unless only_api_actions
122
122
  end
123
- protected :"#{name}_on_create"
124
123
 
125
124
  define_method :"#{name}_on_update" do
126
125
  public_send(service_assoc).on_subject_update(self) unless only_api_actions
@@ -129,17 +128,16 @@ module ExternalServices
129
128
  define_method :"#{name}_on_destroy" do
130
129
  public_send(service_assoc).on_subject_destroy(self) unless only_api_actions
131
130
  end
132
- protected :"#{name}_on_destroy"
133
-
134
- protected def halt_on_external_services_syncing
135
- if external_services_syncing?
136
- errors.add :base, :external_services_sync_in_process
137
- if ::ActiveRecord::VERSION::MAJOR < 5
138
- return false
139
- else
140
- throw :abort
141
- end
142
- end
131
+
132
+ protected
133
+
134
+ def halt_on_external_services_syncing
135
+ return unless external_services_syncing?
136
+
137
+ errors.add :base, :external_services_sync_in_process
138
+ return false if ::ActiveRecord::VERSION::MAJOR < 5
139
+
140
+ throw :abort
143
141
  end
144
142
  end
145
143
  # rubocop:enable Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
@@ -166,13 +164,13 @@ module ExternalServices
166
164
  end
167
165
 
168
166
  define_method :external_services_synced? do
169
- result = (!defined?(super) || super())
167
+ result = !defined?(super) || super()
170
168
  result &&= public_send(synced_method) unless public_send(disabled_method)
171
169
  result
172
170
  end
173
171
 
174
172
  define_method :external_services_syncing? do
175
- result = (defined?(super) && super())
173
+ result = defined?(super) && super()
176
174
  result ||= public_send(syncing_method) unless public_send(disabled_method)
177
175
  result
178
176
  end
@@ -217,14 +215,12 @@ module ExternalServices
217
215
  end
218
216
 
219
217
  define_method :"without_#{name}_api" do |&blk|
220
- begin
221
- old = send :"#{name}_api_disabled"
222
- send :"#{name}_api_disabled=", true
218
+ old = send :"#{name}_api_disabled"
219
+ send :"#{name}_api_disabled=", true
223
220
 
224
- blk.call
225
- ensure
226
- send :"#{name}_api_disabled=", old
227
- end
221
+ blk.call
222
+ ensure
223
+ send :"#{name}_api_disabled=", old
228
224
  end
229
225
 
230
226
  define_method :"find_all_by_#{name}_ids" do |ids|
@@ -272,13 +268,13 @@ module ExternalServices
272
268
 
273
269
  action = "ExternalServices::ApiActions::#{name.to_s.camelize}".constantize.new(
274
270
  initiator: self,
275
- name: args[:name] || self.class.send(:"#{name}_api_name"),
276
- method: method,
277
- path: path,
278
- data: data,
279
- queue: args[:queue],
280
- options: options,
281
- async: async
271
+ name: args[:name] || self.class.send(:"#{name}_api_name"),
272
+ method: method,
273
+ path: path,
274
+ data: data,
275
+ queue: args[:queue],
276
+ options: options,
277
+ async: async
282
278
  )
283
279
 
284
280
  if async
@@ -299,5 +295,5 @@ module ExternalServices
299
295
  end
300
296
 
301
297
  ActiveSupport.on_load :active_record do
302
- ActiveRecord::Base.send :include, ExternalServices::ActiveRecord::HasExternalService
298
+ ActiveRecord::Base.include ExternalServices::ActiveRecord::HasExternalService
303
299
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'faraday'
2
4
  require 'faraday_middleware'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails'
2
4
  module ExternalServices
3
5
  class Engine < ::Rails::Engine
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ExternalServices
2
- VERSION = '0.5.1'.freeze
4
+ VERSION = '0.5.4'
3
5
  end
@@ -1,18 +1,20 @@
1
- require 'external_services/engine'
2
- require 'external_services/version'
1
+ # frozen_string_literal: true
3
2
 
4
- require 'external_services/active_record'
5
- require 'external_services/api'
6
- require 'generators/install_generator'
7
- require 'generators/service_generator'
3
+ require_relative 'external_services/engine'
4
+ require_relative 'external_services/version'
5
+
6
+ require_relative 'external_services/active_record'
7
+ require_relative 'external_services/api'
8
+ require_relative 'generators/install_generator'
9
+ require_relative 'generators/service_generator'
8
10
 
9
11
  if defined?(::RSpec::Core)
10
- require 'rspec/configuration'
11
- require 'rspec/helpers'
12
+ require_relative 'rspec/configuration'
13
+ require_relative 'rspec/helpers'
12
14
  end
13
15
 
14
- Dir[File.join(File.expand_path('lib/external_services'), 'api', '*.rb')].each do |api|
15
- require api
16
+ Dir[File.join(File.expand_path('lib/external_services'), 'api', '*.rb')].sort.each do |api|
17
+ require_relative api
16
18
  end
17
19
 
18
20
  module ExternalServices
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails/generators'
2
4
  require 'rails/generators/active_record'
3
5
 
@@ -15,7 +17,7 @@ module ExternalServices
15
17
  return unless Rails::VERSION::MAJOR >= 5
16
18
 
17
19
  "[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]"
18
- end
20
+ end
19
21
 
20
22
  def create_migration_files
21
23
  add_migration('create_external_services')
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails/generators'
2
4
  require 'rails/generators/active_record'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ExternalServices
2
4
  module RSpec
3
5
  module Configuration
@@ -18,4 +20,4 @@ module ExternalServices
18
20
  end
19
21
  end
20
22
 
21
- RSpec::Core::Configuration.send(:include, ExternalServices::RSpec::Configuration)
23
+ RSpec::Core::Configuration.include ExternalServices::RSpec::Configuration
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ExternalServices
2
4
  module RSpec
3
5
  module Disabler
data/lib/rspec/helpers.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rspec/disabler'
2
4
 
3
5
  module ExternalServices
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: external_services
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Gnuskov
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-09-05 00:00:00.000000000 Z
11
+ date: 2024-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -59,7 +59,7 @@ dependencies:
59
59
  version: 4.2.5
60
60
  - - "<"
61
61
  - !ruby/object:Gem::Version
62
- version: '7'
62
+ version: '8'
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
@@ -69,8 +69,8 @@ dependencies:
69
69
  version: 4.2.5
70
70
  - - "<"
71
71
  - !ruby/object:Gem::Version
72
- version: '7'
73
- description:
72
+ version: '8'
73
+ description:
74
74
  email:
75
75
  - sergey.gnuskov@flant.com
76
76
  executables: []
@@ -125,15 +125,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
125
125
  requirements:
126
126
  - - ">="
127
127
  - !ruby/object:Gem::Version
128
- version: '0'
128
+ version: '2.7'
129
129
  required_rubygems_version: !ruby/object:Gem::Requirement
130
130
  requirements:
131
131
  - - ">="
132
132
  - !ruby/object:Gem::Version
133
133
  version: '0'
134
134
  requirements: []
135
- rubygems_version: 3.3.7
136
- signing_key:
135
+ rubygems_version: 3.5.16
136
+ signing_key:
137
137
  specification_version: 4
138
138
  summary: Gem helps syncronizing objects to different external services like Gitlab,
139
139
  Redmine and any other.