flexite 0.0.23 → 0.0.24
Sign up to get free protection for your applications and to get access to all the features.
- 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
|