flexite 0.0.23 → 0.0.24
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 +4 -4
- data/app/assets/javascripts/flexite/tree.js.erb +1 -1
- data/app/controllers/flexite/api_controller.rb +18 -0
- data/app/controllers/flexite/diffs_controller.rb +5 -12
- data/app/factories/flexite/service_factory.rb +3 -5
- data/app/jobs/show_diff_job.rb +21 -0
- data/app/models/flexite/job_report.rb +9 -0
- data/app/services/flexite/diff/check_service.rb +38 -0
- data/app/services/flexite/diff/get_service.rb +35 -0
- data/app/services/flexite/diff/show_service.rb +18 -0
- data/app/views/flexite/application/index.html.haml +1 -0
- data/app/views/flexite/diffs/_diff.html.haml +1 -1
- data/app/views/flexite/diffs/_timer.js.haml +7 -0
- data/app/views/flexite/diffs/show.js.haml +9 -0
- data/config/routes.rb +5 -0
- data/db/migrate/20180829112429_create_flexite_job_reports.rb +9 -0
- data/lib/flexite/version.rb +1 -1
- data/test/dummy/config/initializers/delayed_job.rb +5 -0
- data/test/dummy/db/schema.rb +24 -1
- data/test/dummy/script/delayed_job +5 -0
- metadata +44 -7
- data/app/services/flexite/diff/async_check_service.rb +0 -18
- data/app/services/flexite/diff/async_show_service.rb +0 -21
- data/app/services/flexite/diff/sync_check_service.rb +0 -42
- data/app/services/flexite/diff/sync_show_service.rb +0 -42
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e032838d9d874df9e0acc442083e551c8e0d760a
|
4
|
+
data.tar.gz: 9ae676c5872e54b2b9e902221a52b117cc78b77f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc06b67c75a5af494f6878078a4501ea879f2552f710a9b7a9bdd476573d2bcb6a854fa448b5d3ed650bc2df9a75d0d8ee104d92c28286ebcfd54ed95486d763
|
7
|
+
data.tar.gz: 628fba6f9199cfd136972b0ca4266308b574898f7b546e2f3064f55afea3a6ad332f6a8e7885d8b8a27bf22c57d3c91efe28cdbb868decfd24534d798e6784a7
|
@@ -26,7 +26,7 @@ $flexite(window).on('load', function () {
|
|
26
26
|
});
|
27
27
|
|
28
28
|
$flexite("#show-diff").on("click", function () {
|
29
|
-
$flexite.get("<%=
|
29
|
+
$flexite.get("<%= get_diff_path %>" + "?url=" + $flexite("select[id='stage']").val() + "&stage=" + $flexite("select[id='stage']").text());
|
30
30
|
});
|
31
31
|
|
32
32
|
$flexite("#new-node-btn").on("click", function () {
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Flexite
|
2
|
+
class ApiController < ApplicationController
|
3
|
+
before_filter :check_token
|
4
|
+
|
5
|
+
def configs
|
6
|
+
@nodes = Config.t_nodes
|
7
|
+
render json: @nodes
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def check_token
|
13
|
+
if Diff::Token.new(params[:token]).invalid?
|
14
|
+
render json: { status: 'error', code: 401, message: 'unauthorized user' }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -26,19 +26,12 @@ module Flexite
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def show
|
29
|
-
result = ServiceFactory.instance.get(
|
30
|
-
|
31
|
-
if result.succeed?
|
32
|
-
@data = result.data
|
33
|
-
@stage = params[:stage]
|
34
|
-
@url = params[:url]
|
35
|
-
end
|
36
|
-
|
37
|
-
if result.flash.present?
|
38
|
-
service_flash(result)
|
39
|
-
end
|
29
|
+
@result = ServiceFactory.instance.get(:show_diff, params[:name]).call
|
30
|
+
end
|
40
31
|
|
41
|
-
|
32
|
+
def get
|
33
|
+
@result = ServiceFactory.instance.get(:get_diff, params[:stage], params[:url]).call
|
34
|
+
render :show
|
42
35
|
end
|
43
36
|
end
|
44
37
|
end
|
@@ -13,12 +13,10 @@ module Flexite
|
|
13
13
|
arr_entry_destroy: 'Entry::DestroyService',
|
14
14
|
destroy_array_entry: 'Entry::DestroyArrayEntryService',
|
15
15
|
update_config: 'Config::UpdateService',
|
16
|
-
sync_check_diff: 'Diff::SyncCheckService',
|
17
|
-
async_check_diff: 'Diff::AsyncCheckService',
|
18
|
-
sync_show_diff: 'Diff::SyncShowService',
|
19
|
-
async_show_diff: 'Diff::AsyncShowService',
|
20
16
|
apply_diff: 'Diff::ApplyService',
|
21
|
-
push_diff: 'Diff::PushService'
|
17
|
+
push_diff: 'Diff::PushService',
|
18
|
+
get_diff: 'Diff::GetService',
|
19
|
+
show_diff: 'Diff::ShowService'
|
22
20
|
}
|
23
21
|
end
|
24
22
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
ShowDiffJob = Struct.new(:other_tree, :file_name ) do
|
2
|
+
def before
|
3
|
+
Flexite::JobReport.create(file_name: file_name, status: Flexite::JobReport::STATUS[:in_progress])
|
4
|
+
end
|
5
|
+
|
6
|
+
def perform
|
7
|
+
Flexite::Diff::CheckService.new(other_tree, file_name).call
|
8
|
+
end
|
9
|
+
|
10
|
+
def success
|
11
|
+
Flexite::JobReport
|
12
|
+
.find_by_file_name(file_name)
|
13
|
+
.update_attributes(status: Flexite::JobReport::STATUS[:done])
|
14
|
+
end
|
15
|
+
|
16
|
+
def error
|
17
|
+
Flexite::JobReport
|
18
|
+
.find_by_file_name(file_name)
|
19
|
+
.update_attributes(status: Flexite::JobReport::STATUS[:error])
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Flexite
|
2
|
+
class Diff
|
3
|
+
class CheckService
|
4
|
+
def initialize(other_tree, file_name)
|
5
|
+
@other_tree = other_tree
|
6
|
+
@current_tree = Config.t_nodes
|
7
|
+
@file_name = file_name
|
8
|
+
end
|
9
|
+
|
10
|
+
def call
|
11
|
+
check
|
12
|
+
save
|
13
|
+
end
|
14
|
+
|
15
|
+
protected
|
16
|
+
|
17
|
+
def check
|
18
|
+
diffs = HashDiff.diff(@current_tree, @other_tree, array_path: true)
|
19
|
+
|
20
|
+
if diffs.blank?
|
21
|
+
return {}
|
22
|
+
end
|
23
|
+
|
24
|
+
@view_diffs = { '+': [], '-': [], '~': [] }
|
25
|
+
|
26
|
+
diffs.each do |type, depth, *changes|
|
27
|
+
@view_diffs[type.to_sym] << [depth, *changes]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def save
|
32
|
+
File.open("config/diffs/#{@file_name}", "w") do |file|
|
33
|
+
file.write @view_diffs.to_yaml
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Flexite
|
2
|
+
class Diff
|
3
|
+
class GetService
|
4
|
+
include Flexite::Engine.routes.url_helpers
|
5
|
+
|
6
|
+
def initialize(stage, endpoint)
|
7
|
+
@stage = stage
|
8
|
+
@token = Flexite.config.migration_token
|
9
|
+
@endpoint = endpoint + api_configs_path(token: @token)
|
10
|
+
@timestamps = Time.now.strftime("%Y%m%d%H%M%S")
|
11
|
+
@file_name = "#{@timestamps}_#{@stage}.yml"
|
12
|
+
@result = ActionService::Result.new
|
13
|
+
end
|
14
|
+
|
15
|
+
def call
|
16
|
+
get_configs
|
17
|
+
calculate_diff
|
18
|
+
|
19
|
+
Flexite::ActionService::Result.new(data: { file_name: @file_name })
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def get_configs
|
25
|
+
uri = URI(@endpoint)
|
26
|
+
response = Net::HTTP.get(uri)
|
27
|
+
@other_tree = JSON.parse(response)
|
28
|
+
end
|
29
|
+
|
30
|
+
def calculate_diff
|
31
|
+
Delayed::Job.enqueue(ShowDiffJob.new(@other_tree, @file_name))
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Flexite
|
2
|
+
class Diff
|
3
|
+
class ShowService
|
4
|
+
def initialize(file_name)
|
5
|
+
@file_name = file_name
|
6
|
+
end
|
7
|
+
|
8
|
+
def call
|
9
|
+
@data = { file_name: @file_name}
|
10
|
+
if File.exists?("#{Rails.root}/config/diffs/#{@file_name}")
|
11
|
+
@data = { diffs: YAML.load_file("#{Rails.root}/config/diffs/#{@file_name}") }
|
12
|
+
end
|
13
|
+
|
14
|
+
Flexite::ActionService::Result.new(data: @data)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
- data = @result.data.try(:[], :diffs)
|
2
|
+
-if data.blank?
|
3
|
+
$flexite('#diff-timer').html("#{j render 'timer'}");
|
4
|
+
-else
|
5
|
+
$flexite("#modal-body").html("#{j render 'diff', data: data}");
|
6
|
+
// $flexite("#submit-btn").html("#{j link_to 'Push', push_diff_path(stage: @stage, url: @url), remote: true, class: 'btn btn-success' }");
|
7
|
+
$flexite("#modal").modal("show");
|
8
|
+
|
9
|
+
|
data/config/routes.rb
CHANGED
data/lib/flexite/version.rb
CHANGED
data/test/dummy/db/schema.rb
CHANGED
@@ -11,7 +11,23 @@
|
|
11
11
|
#
|
12
12
|
# It's strongly recommended to check this file into your version control system.
|
13
13
|
|
14
|
-
ActiveRecord::Schema.define(:version =>
|
14
|
+
ActiveRecord::Schema.define(:version => 20180829112429) do
|
15
|
+
|
16
|
+
create_table "delayed_jobs", :force => true do |t|
|
17
|
+
t.integer "priority", :default => 0, :null => false
|
18
|
+
t.integer "attempts", :default => 0, :null => false
|
19
|
+
t.text "handler", :null => false
|
20
|
+
t.text "last_error"
|
21
|
+
t.datetime "run_at"
|
22
|
+
t.datetime "locked_at"
|
23
|
+
t.datetime "failed_at"
|
24
|
+
t.string "locked_by"
|
25
|
+
t.string "queue"
|
26
|
+
t.datetime "created_at"
|
27
|
+
t.datetime "updated_at"
|
28
|
+
end
|
29
|
+
|
30
|
+
add_index "delayed_jobs", ["priority", "run_at"], :name => "delayed_jobs_priority"
|
15
31
|
|
16
32
|
create_table "flexite_configs", :force => true do |t|
|
17
33
|
t.string "name"
|
@@ -56,4 +72,11 @@ ActiveRecord::Schema.define(:version => 20180629110934) do
|
|
56
72
|
|
57
73
|
add_index "flexite_history_attributes", ["history_id"], :name => "index_flexite_history_attributes_on_history_id"
|
58
74
|
|
75
|
+
create_table "flexite_job_reports", :force => true do |t|
|
76
|
+
t.string "file_name"
|
77
|
+
t.integer "status"
|
78
|
+
t.datetime "created_at", :null => false
|
79
|
+
t.datetime "updated_at", :null => false
|
80
|
+
end
|
81
|
+
|
59
82
|
end
|
metadata
CHANGED
@@ -1,15 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flexite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.24
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maksim Rusakovich
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-08-
|
11
|
+
date: 2018-08-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: delayed_job_active_record
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.0.3
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 4.0.3
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: daemons
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.2.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.2.0
|
13
41
|
- !ruby/object:Gem::Dependency
|
14
42
|
name: rails
|
15
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -176,6 +204,7 @@ files:
|
|
176
204
|
- app/assets/stylesheets/flexite/entries.css
|
177
205
|
- app/assets/stylesheets/flexite/tree.css
|
178
206
|
- app/assets/stylesheets/scaffold.css
|
207
|
+
- app/controllers/flexite/api_controller.rb
|
179
208
|
- app/controllers/flexite/application_controller.rb
|
180
209
|
- app/controllers/flexite/configs_controller.rb
|
181
210
|
- app/controllers/flexite/diffs_controller.rb
|
@@ -190,6 +219,7 @@ files:
|
|
190
219
|
- app/helpers/flexite/application_helper.rb
|
191
220
|
- app/helpers/flexite/configs_helper.rb
|
192
221
|
- app/helpers/flexite/entries_helper.rb
|
222
|
+
- app/jobs/show_diff_job.rb
|
193
223
|
- app/models/concerns/flexite/with_history.rb
|
194
224
|
- app/models/flexite/arr_entry.rb
|
195
225
|
- app/models/flexite/bool_entry.rb
|
@@ -199,6 +229,7 @@ files:
|
|
199
229
|
- app/models/flexite/history.rb
|
200
230
|
- app/models/flexite/history_attribute.rb
|
201
231
|
- app/models/flexite/int_entry.rb
|
232
|
+
- app/models/flexite/job_report.rb
|
202
233
|
- app/models/flexite/str_entry.rb
|
203
234
|
- app/models/flexite/sym_entry.rb
|
204
235
|
- app/presenters/flexite/diff_presenter.rb
|
@@ -210,12 +241,11 @@ files:
|
|
210
241
|
- app/services/flexite/data/migrators/yaml.rb
|
211
242
|
- app/services/flexite/data/new_service.rb
|
212
243
|
- app/services/flexite/diff/apply_service.rb
|
213
|
-
- app/services/flexite/diff/
|
214
|
-
- app/services/flexite/diff/
|
244
|
+
- app/services/flexite/diff/check_service.rb
|
245
|
+
- app/services/flexite/diff/get_service.rb
|
215
246
|
- app/services/flexite/diff/push_service.rb
|
216
247
|
- app/services/flexite/diff/save_diff_service.rb
|
217
|
-
- app/services/flexite/diff/
|
218
|
-
- app/services/flexite/diff/sync_show_service.rb
|
248
|
+
- app/services/flexite/diff/show_service.rb
|
219
249
|
- app/services/flexite/diff/token.rb
|
220
250
|
- app/services/flexite/entry/array_create_service.rb
|
221
251
|
- app/services/flexite/entry/array_update_service.rb
|
@@ -233,7 +263,9 @@ files:
|
|
233
263
|
- app/views/flexite/configs/new.js.haml
|
234
264
|
- app/views/flexite/configs/update.js.haml
|
235
265
|
- app/views/flexite/diffs/_diff.html.haml
|
266
|
+
- app/views/flexite/diffs/_timer.js.haml
|
236
267
|
- app/views/flexite/diffs/push.js.haml
|
268
|
+
- app/views/flexite/diffs/show.js.haml
|
237
269
|
- app/views/flexite/diffs/sync_show.js.haml
|
238
270
|
- app/views/flexite/entries/_form.html.haml
|
239
271
|
- app/views/flexite/entries/_new_array_entry_form.html.haml
|
@@ -272,6 +304,7 @@ files:
|
|
272
304
|
- db/migrate/20180618115057_create_flexite_history_attributes.rb
|
273
305
|
- db/migrate/20180621134948_add_description_column_to_flexite_configs.rb
|
274
306
|
- db/migrate/20180629110934_remove_created_by_column_from_flexite_configs.rb
|
307
|
+
- db/migrate/20180829112429_create_flexite_job_reports.rb
|
275
308
|
- lib/flexite.rb
|
276
309
|
- lib/flexite/cached_node.rb
|
277
310
|
- lib/flexite/configuration.rb
|
@@ -296,6 +329,7 @@ files:
|
|
296
329
|
- test/dummy/config/environments/production.rb
|
297
330
|
- test/dummy/config/environments/test.rb
|
298
331
|
- test/dummy/config/initializers/backtrace_silencers.rb
|
332
|
+
- test/dummy/config/initializers/delayed_job.rb
|
299
333
|
- test/dummy/config/initializers/flexite.rb
|
300
334
|
- test/dummy/config/initializers/inflections.rb
|
301
335
|
- test/dummy/config/initializers/mime_types.rb
|
@@ -314,6 +348,7 @@ files:
|
|
314
348
|
- test/dummy/public/422.html
|
315
349
|
- test/dummy/public/500.html
|
316
350
|
- test/dummy/public/favicon.ico
|
351
|
+
- test/dummy/script/delayed_job
|
317
352
|
- test/dummy/script/rails
|
318
353
|
- test/dummy/tmp/cache/assets/C67/060/sprockets%2Ffaf176441f0544dd2b51901280044b40
|
319
354
|
- test/dummy/tmp/cache/assets/C9D/530/sprockets%2Fdcd49c063327c12052812f41c20a8e74
|
@@ -375,7 +410,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
375
410
|
version: '0'
|
376
411
|
requirements: []
|
377
412
|
rubyforge_project:
|
378
|
-
rubygems_version: 2.6.
|
413
|
+
rubygems_version: 2.6.14
|
379
414
|
signing_key:
|
380
415
|
specification_version: 4
|
381
416
|
summary: Database driven web-app settings
|
@@ -438,11 +473,13 @@ test_files:
|
|
438
473
|
- test/dummy/config/initializers/wrap_parameters.rb
|
439
474
|
- test/dummy/config/initializers/backtrace_silencers.rb
|
440
475
|
- test/dummy/config/initializers/secret_token.rb
|
476
|
+
- test/dummy/config/initializers/delayed_job.rb
|
441
477
|
- 'test/dummy/elect("#{Config.table_name}.*, #{Entry.table_name}.id AS entry_id")'
|
442
478
|
- test/dummy/app/controllers/application_controller.rb
|
443
479
|
- test/dummy/app/helpers/application_helper.rb
|
444
480
|
- test/dummy/app/assets/stylesheets/application.css
|
445
481
|
- test/dummy/app/assets/javascripts/application.js
|
482
|
+
- test/dummy/script/delayed_job
|
446
483
|
- test/dummy/script/rails
|
447
484
|
- test/dummy/Rakefile
|
448
485
|
- test/test_helper.rb
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module Flexite
|
2
|
-
class Diff
|
3
|
-
class AsyncCheckService
|
4
|
-
def initialize(*args)
|
5
|
-
@args = args
|
6
|
-
@handler = Flexite.config.async_diff_handler
|
7
|
-
end
|
8
|
-
|
9
|
-
def call
|
10
|
-
unless @handler.is_a?(Proc)
|
11
|
-
raise 'Async handler should be a proc object'
|
12
|
-
end
|
13
|
-
|
14
|
-
@handler.call(*@args)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
module Flexite
|
2
|
-
class Diff
|
3
|
-
class AsyncShowService < SyncShowService
|
4
|
-
def call
|
5
|
-
response = Flexite.cache.read("#{Flexite.state_digest}-#{@stage}-show-diff")
|
6
|
-
|
7
|
-
if response.present?
|
8
|
-
return result(response)
|
9
|
-
end
|
10
|
-
|
11
|
-
expire_old
|
12
|
-
nodes = Config.t_nodes
|
13
|
-
checksum = Digest::MD5.hexdigest(nodes.to_json)
|
14
|
-
Flexite.cache.write("#{Flexite.state_digest}-#{@stage}-diff-checksum", checksum)
|
15
|
-
@remote_diff.check({ token: Flexite.config.migration_token, tree: nodes, stage: Flexite.config.stagename, checksum: checksum })
|
16
|
-
ActionService::Result.new(flash: { type: :warning, message: "You will be notified via #{Flexite.config.async_diff_handler&.notifier} when difference check will be completed" },
|
17
|
-
endpoint: { partial: 'flexite/shared/show_flash' })
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
module Flexite
|
2
|
-
class Diff
|
3
|
-
class SyncCheckService
|
4
|
-
def initialize(other_tree, token, stage, checksum)
|
5
|
-
@other_tree = other_tree
|
6
|
-
@current_tree = Config.t_nodes
|
7
|
-
@token = Token.new(token)
|
8
|
-
@stage = stage
|
9
|
-
@checksum = checksum
|
10
|
-
end
|
11
|
-
|
12
|
-
def call
|
13
|
-
check
|
14
|
-
end
|
15
|
-
|
16
|
-
protected
|
17
|
-
|
18
|
-
def check
|
19
|
-
if @token.invalid?
|
20
|
-
return { error: 'Invalid token', code: 401 }
|
21
|
-
end
|
22
|
-
|
23
|
-
diffs = HashDiff.diff(@current_tree, @other_tree, array_path: true)
|
24
|
-
|
25
|
-
if diffs.blank?
|
26
|
-
return {}
|
27
|
-
end
|
28
|
-
|
29
|
-
view_diffs = { '+': [], '-': [], '~': [] }
|
30
|
-
|
31
|
-
diffs.each do |type, depth, *changes|
|
32
|
-
view_diffs[type.to_sym] << [depth, *changes]
|
33
|
-
end
|
34
|
-
|
35
|
-
Flexite.cache.write("#{Flexite.state_digest}-#{@checksum}-#{@stage}-diffs", diffs)
|
36
|
-
{ diffs: view_diffs }
|
37
|
-
rescue => exc
|
38
|
-
{ error: exc.message, code: 500 }
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
module Flexite
|
2
|
-
class Diff
|
3
|
-
class SyncShowService
|
4
|
-
def initialize(stage, url)
|
5
|
-
@stage = stage
|
6
|
-
@remote_diff = Diff.new(url)
|
7
|
-
@state_digest = Flexite.state_digest
|
8
|
-
end
|
9
|
-
|
10
|
-
def call
|
11
|
-
response = Flexite.cache.read("#{@state_digest}-#{@stage}-show-diff")
|
12
|
-
|
13
|
-
if response.nil?
|
14
|
-
expire_old
|
15
|
-
nodes = Config.t_nodes
|
16
|
-
checksum = Digest::MD5.hexdigest(nodes.to_json)
|
17
|
-
Flexite.cache.write("#{@state_digest}-#{@stage}-diff-checksum", checksum)
|
18
|
-
response = @remote_diff.check({ token: Flexite.config.migration_token, tree: nodes, stage: Flexite.config.stagename, checksum: checksum })
|
19
|
-
Flexite.cache.write("#{@state_digest}-#{@stage}-show-diff", response)
|
20
|
-
end
|
21
|
-
|
22
|
-
result(response)
|
23
|
-
end
|
24
|
-
|
25
|
-
protected
|
26
|
-
|
27
|
-
def expire_old
|
28
|
-
Flexite.cache.delete_matched(Flexite.match_key("-#{@stage}-show-diff"))
|
29
|
-
Flexite.cache.delete_matched(Flexite.match_key("-#{@stage}-diff-checksum"))
|
30
|
-
end
|
31
|
-
|
32
|
-
def result(response)
|
33
|
-
if response[:error].present?
|
34
|
-
expire_old
|
35
|
-
ActionService::Result.new(success: false, flash: { type: :danger, message: response[:error] }, endpoint: { partial: 'flexite/shared/show_flash' })
|
36
|
-
else
|
37
|
-
ActionService::Result.new(data: response[:diffs], endpoint: { action: :sync_show })
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|