external_services 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YWNlM2UzYTQxZGE4ZmNiMDVmMTA3ZTc3ZjI3OTc1MjE5MWViYmNiYg==
4
+ NDU3NjA4NTljMWEwODUxMDRiNzM4YjYzZGU1YzQ4NTRhZDkzOGMwOA==
5
5
  data.tar.gz: !binary |-
6
- Mjg2YmE2MmIzZDcwYTdmYTY3OGY5NWE1NmZkY2QyM2RkMmFkOWE5OA==
6
+ OTVhY2JhMjUzM2NhZjJiMDkyODM3MWRkZDZhN2UxM2ViMTc2YTZiNA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NTMzOGQzZTdmMmZjZDg0ODY1NzM3MmVlNTliM2Y4ZDk1ZGI5ZDI1ZGM0NDlh
10
- MGM1NGQ3MmRjYTgwN2RhMmYxM2QwNDVlZDdjZTdiZjhlNTFjNzhhOGQ0ZjNl
11
- NGIxMTdjZmEzYjdhZTA0NTg3MzhkOGZlODMwZmVmZTI3MjI1ZDM=
9
+ OTQxOTVkYzNiZDZhZGRiNmY1MzE1NmE4YTBlYTlhZGUxMzhjYTc5NTNlNDE4
10
+ Mjg3YzhlNTQyMjgxZjY2ZDU1ZTk5M2RlYTAyNWUyNDg4YzUxOTQ2Yjc3MTJk
11
+ Njc2ZTExYTJmMmE1ZThiMGVlZGFkYWRlM2JiZjlhNGY5NjlmY2U=
12
12
  data.tar.gz: !binary |-
13
- ZmNmNDE2MTIzMzQ2ZjYzNWUyMTVmODdkMzU0ZGE0OWUyZDFlOTI4MWM3YzE1
14
- ZjhjNDQwY2ZmNmQ2YzQ4MzMyYzVmZGQzNTY3NmE5YzcwOWFiYzI4MmY3OThi
15
- MjA4YmQyZTMyYTM1YWM1Nzc4NjM5ZGQ3Mjk5YzUyYTllZjJmOTc=
13
+ MGEyNzQ2ZmEyMmU4NWMxZmZhY2M2ODVlMmJmZGJkZWQ4MDU3NGY3NDdiOGY1
14
+ YzNiNDE3OGE4YTE1MDRiNTIzZThkMjk3OGMzMTZmNDVkMmY5ZmMyN2IwYTdl
15
+ NzQyYTQ2ZjI0NzgwYTZkM2QwNTMwNmVjOGIxNmEyNTBiNzlhNDc=
@@ -11,6 +11,7 @@ module ExternalServices
11
11
  serialize :options, JSON
12
12
 
13
13
  scope :unprocessed, -> { where(processed_at: nil) }
14
+ scope :to_create, ->(obj) { where(initiator: obj, method: :post) }
14
15
 
15
16
  before_validation :assign_queue
16
17
  before_validation :process_data
@@ -2,4 +2,4 @@ en:
2
2
  activerecord:
3
3
  errors:
4
4
  messages:
5
- external_services_not_synced: "Not all external services are synced"
5
+ external_services_sync_in_process: "External services sync is in process now"
@@ -102,8 +102,8 @@ module ExternalServices
102
102
  public_send(:"build_#{service_assoc}") if public_send(service_assoc).blank?
103
103
  end
104
104
 
105
- before_update :halt_on_external_services_unsynced
106
- before_destroy :halt_on_external_services_unsynced
105
+ before_update :halt_on_external_services_syncing
106
+ before_destroy :halt_on_external_services_syncing
107
107
  end
108
108
 
109
109
  after_save :"#{name}_on_create", if: :id_changed?
@@ -134,9 +134,9 @@ module ExternalServices
134
134
  end
135
135
  protected :"#{name}_on_revive"
136
136
 
137
- protected def halt_on_external_services_unsynced
138
- unless external_services_synced?
139
- errors.add :base, :external_services_not_synced
137
+ protected def halt_on_external_services_syncing
138
+ if external_services_syncing?
139
+ errors.add :base, :external_services_sync_in_process
140
140
  if ::ActiveRecord::VERSION::MAJOR < 5
141
141
  return false
142
142
  else
@@ -153,6 +153,7 @@ module ExternalServices
153
153
  def define_external_service_sync_methods(name, _options = {})
154
154
  service_assoc = :"#{name}_service"
155
155
  synced_method = :"#{name}_service_synced?"
156
+ syncing_method = :"#{name}_service_syncing?"
156
157
  disabled_method = :"#{name}_api_disabled"
157
158
 
158
159
  syncs_module = Module.new do
@@ -162,11 +163,22 @@ module ExternalServices
162
163
  public_send(service_assoc).external_id?
163
164
  end
164
165
 
166
+ define_method syncing_method do
167
+ action_class = "ExternalServices::ApiActions::#{name.to_s.camelize}".constantize
168
+ action_class.to_create(self).unprocessed.exists?
169
+ end
170
+
165
171
  define_method :external_services_synced? do
166
172
  result = (!defined?(super) || super())
167
173
  result &&= public_send(synced_method) unless public_send(disabled_method)
168
174
  result
169
175
  end
176
+
177
+ define_method :external_services_syncing? do
178
+ result = (!defined?(super) || super())
179
+ result &&= public_send(syncing_method) unless public_send(disabled_method)
180
+ result
181
+ end
170
182
  end
171
183
 
172
184
  include syncs_module
@@ -1,3 +1,3 @@
1
1
  module ExternalServices
2
- VERSION = '0.1.5'.freeze
2
+ VERSION = '0.1.6'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: external_services
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Gnuskov