eac_rails_remotes 0.4.0 → 0.5.0
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/controllers/eac_rails_remotes/instances_controller.rb +3 -0
- data/app/models/eac_rails_remotes/instance/class_methods.rb +31 -0
- data/app/models/eac_rails_remotes/instance/export.rb +30 -7
- data/app/models/eac_rails_remotes/instance/export_target_attribute.rb +11 -3
- data/app/models/eac_rails_remotes/instance.rb +3 -24
- data/lib/eac_rails_remotes/errors/target_association_export.rb +15 -0
- data/lib/eac_rails_remotes/errors/target_export.rb +14 -0
- data/lib/eac_rails_remotes/export_all.rb +1 -1
- data/lib/eac_rails_remotes/version.rb +1 -1
- data/lib/eac_rails_remotes.rb +7 -2
- data/lib/tasks/eac_rails_remotes.rake +1 -1
- metadata +19 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b12a302c21f1a69b8e03576b69b3920f97c1feca24cfba1b98660ca9444da77d
|
4
|
+
data.tar.gz: dcd50e1ceea808433376d06d1dccd7c72959335e242c2e162b8af4216c3fd018
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c422d2c1b729540570886c2c9ea98613f4dbeaa865538c67afb69cbfb66303cec22be1bb6933789b6e3e33b905de03d3a40a1c0ddf4b144c507c3361c7d2bf6f
|
7
|
+
data.tar.gz: a674d9384cf95c83dbe7ea118cce32283a10b5845f4b3a593688d27f30538cd17999b1a610e2c123a8f05ae928c7de5ed7c1f9a1d5430d96088e7ca148f92c38
|
@@ -6,8 +6,11 @@ module EacRailsRemotes
|
|
6
6
|
|
7
7
|
active_scaffold :'eac_rails_remotes/instance' do |conf|
|
8
8
|
conf.actions.exclude :create, :update
|
9
|
+
conf.list.columns = %i[entity source code export_status target created_at
|
10
|
+
updated_at]
|
9
11
|
conf.columns[:export_status].form_ui = :select
|
10
12
|
conf.columns[:entity].form_ui = :select
|
13
|
+
conf.columns[:target].clear_link
|
11
14
|
conf.actions.swap :search, :field_search
|
12
15
|
conf.field_search.columns = :entity, :export_status
|
13
16
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module EacRailsRemotes
|
6
|
+
class Instance < ::ActiveRecord::Base
|
7
|
+
module ClassMethods
|
8
|
+
common_concern
|
9
|
+
class_methods do
|
10
|
+
# @param record [Hash]
|
11
|
+
# @return [EacRailsRemotes::Instance]
|
12
|
+
def import(record)
|
13
|
+
ri = where(source: record.fetch(:source), entity: sanitize_entity(record.fetch(:entity)),
|
14
|
+
code: record.fetch(:code)).first_or_initialize
|
15
|
+
ri.parsed_data = record.fetch(:data)
|
16
|
+
if ri.data_changed?
|
17
|
+
ri.export_status = EXPORT_STATUS_NEW_DATA
|
18
|
+
ri.save!
|
19
|
+
end
|
20
|
+
ri
|
21
|
+
end
|
22
|
+
|
23
|
+
# @oaram entity [Object]
|
24
|
+
# @return [String]
|
25
|
+
def sanitize_entity(entity)
|
26
|
+
entity.is_a?(::Module) ? entity.name : entity.to_s
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -6,21 +6,26 @@ module EacRailsRemotes
|
|
6
6
|
class Instance < ::ActiveRecord::Base
|
7
7
|
class Export < ::SimpleDelegator
|
8
8
|
acts_as_instance_method
|
9
|
+
enable_simple_cache
|
9
10
|
|
10
11
|
def result
|
11
12
|
Rails.logger.info("Exporting #{self}")
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
else
|
17
|
-
update!(export_status: EXPORT_STATUS_ERROR,
|
18
|
-
export_message: target_export_message(t))
|
13
|
+
begin
|
14
|
+
filled_target.save ? update_as_ok : update_as_error
|
15
|
+
rescue ::EacRailsRemotes::Errors::TargetAssociationExport => e
|
16
|
+
update_as_association_error(e)
|
19
17
|
end
|
20
18
|
end
|
21
19
|
|
22
20
|
protected
|
23
21
|
|
22
|
+
# @return [ActiveRecord::Base]
|
23
|
+
def filled_target_uncached
|
24
|
+
t = target || entity_class.new
|
25
|
+
t.attributes = target_attributes
|
26
|
+
t
|
27
|
+
end
|
28
|
+
|
24
29
|
# @return [Hash]
|
25
30
|
def target_attributes
|
26
31
|
parsed_data.map { |k, v| export_target_attribute(k, v) }.compact_blank.to_h
|
@@ -30,6 +35,24 @@ module EacRailsRemotes
|
|
30
35
|
def target_export_message(target)
|
31
36
|
"ATTRIBUTES: #{target.attributes}\nERRORS: #{target.errors.messages}\n"
|
32
37
|
end
|
38
|
+
|
39
|
+
# @param error [EacRailsRemotes::Errors::TargetAssociationExport]
|
40
|
+
# @return [void]
|
41
|
+
def update_as_association_error(error)
|
42
|
+
update!(export_status: EXPORT_STATUS_ERROR,
|
43
|
+
export_message: target_export_message(error.record))
|
44
|
+
end
|
45
|
+
|
46
|
+
# @return [void]
|
47
|
+
def update_as_error
|
48
|
+
update!(export_status: EXPORT_STATUS_ERROR,
|
49
|
+
export_message: target_export_message(filled_target))
|
50
|
+
end
|
51
|
+
|
52
|
+
# @return [void]
|
53
|
+
def update_as_ok
|
54
|
+
update!(export_status: EXPORT_STATUS_OK, export_message: '', target: filled_target)
|
55
|
+
end
|
33
56
|
end
|
34
57
|
end
|
35
58
|
end
|
@@ -19,6 +19,13 @@ module EacRailsRemotes
|
|
19
19
|
|
20
20
|
protected
|
21
21
|
|
22
|
+
# @return [EacRailsRemotes::Instance]
|
23
|
+
def association_record_uncached
|
24
|
+
instance.class.find_by(
|
25
|
+
source: instance.source, entity: entity_association_class.klass.name, code: value
|
26
|
+
)
|
27
|
+
end
|
28
|
+
|
22
29
|
# @return [ActiveRecord::Reflection::BelongsToReflection, nil]
|
23
30
|
def entity_association_class_uncached
|
24
31
|
instance.entity_class.reflect_on_all_associations(:belongs_to)
|
@@ -27,10 +34,11 @@ module EacRailsRemotes
|
|
27
34
|
|
28
35
|
# @return [Array]
|
29
36
|
def result_by_association
|
30
|
-
|
31
|
-
|
37
|
+
[entity_association_class.name, association_record&.assert_target]
|
38
|
+
rescue ::EacRailsRemotes::Errors::TargetExport => e
|
39
|
+
raise ::EacRailsRemotes::Errors::TargetAssociationExport.new(
|
40
|
+
instance, entity_association_class.name, e.record
|
32
41
|
)
|
33
|
-
[entity_association_class.name, ri&.assert_target]
|
34
42
|
end
|
35
43
|
|
36
44
|
# @return [Boolean]
|
@@ -16,7 +16,7 @@ module EacRailsRemotes
|
|
16
16
|
|
17
17
|
belongs_to :target, polymorphic: true, optional: true
|
18
18
|
|
19
|
-
scope :
|
19
|
+
scope :pending, lambda {
|
20
20
|
where.not(export_status: EXPORT_STATUS_OK)
|
21
21
|
}
|
22
22
|
|
@@ -41,7 +41,7 @@ module EacRailsRemotes
|
|
41
41
|
export if export_status != EXPORT_STATUS_ERROR
|
42
42
|
return target if target.present?
|
43
43
|
|
44
|
-
raise
|
44
|
+
raise ::EacRailsRemotes::Errors::TargetExport, self
|
45
45
|
end
|
46
46
|
|
47
47
|
# @return [Class<ActiveRecord::Base>]
|
@@ -49,27 +49,6 @@ module EacRailsRemotes
|
|
49
49
|
entity.constantize
|
50
50
|
end
|
51
51
|
|
52
|
-
|
53
|
-
# @param record [Hash]
|
54
|
-
# @return [EacRailsRemotes::Instance]
|
55
|
-
def import(record)
|
56
|
-
ri = where(source: record.fetch(:source), entity: sanitize_entity(record.fetch(:entity)),
|
57
|
-
code: record.fetch(:code)).first_or_initialize
|
58
|
-
ri.parsed_data = record.fetch(:data)
|
59
|
-
if ri.data_changed?
|
60
|
-
ri.export_status = EXPORT_STATUS_NEW_DATA
|
61
|
-
ri.save!
|
62
|
-
end
|
63
|
-
ri
|
64
|
-
end
|
65
|
-
|
66
|
-
# @oaram entity [Object]
|
67
|
-
# @return [String]
|
68
|
-
def sanitize_entity(entity)
|
69
|
-
entity.is_a?(::Module) ? entity.name : entity.to_s
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
require_sub __FILE__, require_mode: :kernel
|
52
|
+
require_sub __FILE__, require_mode: :kernel, include_modules: true
|
74
53
|
end
|
75
54
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module EacRailsRemotes
|
4
|
+
module Errors
|
5
|
+
class TargetAssociationExport < ::EacRailsRemotes::Errors::TargetExport
|
6
|
+
attr_reader :association_name, :owner_record
|
7
|
+
|
8
|
+
def initialize(association_record, association_name, owner_record)
|
9
|
+
super(association_record)
|
10
|
+
@association_name = association_name
|
11
|
+
@owner_record = owner_record
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module EacRailsRemotes
|
4
|
+
module Errors
|
5
|
+
class TargetExport < ::RuntimeError
|
6
|
+
attr_reader :record
|
7
|
+
|
8
|
+
def initialize(record)
|
9
|
+
super("Export failed (ID: #{record.id}, export message: \"#{record.export_message}\")")
|
10
|
+
@record = record
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/lib/eac_rails_remotes.rb
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'eac_ruby_utils
|
3
|
+
require 'eac_ruby_utils'
|
4
|
+
EacRubyUtils::RootModuleSetup.perform __FILE__
|
4
5
|
|
5
6
|
module EacRailsRemotes
|
6
|
-
require_sub __FILE__
|
7
7
|
end
|
8
|
+
|
9
|
+
require 'eac_active_scaffold'
|
10
|
+
require 'eac_rails_utils'
|
11
|
+
|
12
|
+
require 'eac_rails_remotes/engine'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eac_rails_remotes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Put here the authors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-07-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: eac_active_scaffold
|
@@ -16,68 +16,62 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
20
|
-
- - ">="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 0.6.1
|
19
|
+
version: '0.7'
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
24
|
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '0.
|
30
|
-
- - ">="
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 0.6.1
|
26
|
+
version: '0.7'
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
28
|
name: eac_rails_utils
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
36
30
|
requirements:
|
37
31
|
- - "~>"
|
38
32
|
- !ruby/object:Gem::Version
|
39
|
-
version: '0.
|
33
|
+
version: '0.26'
|
40
34
|
type: :runtime
|
41
35
|
prerelease: false
|
42
36
|
version_requirements: !ruby/object:Gem::Requirement
|
43
37
|
requirements:
|
44
38
|
- - "~>"
|
45
39
|
- !ruby/object:Gem::Version
|
46
|
-
version: '0.
|
40
|
+
version: '0.26'
|
47
41
|
- !ruby/object:Gem::Dependency
|
48
42
|
name: eac_ruby_utils
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
50
44
|
requirements:
|
51
45
|
- - "~>"
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version: '0.
|
47
|
+
version: '0.128'
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 0.128.3
|
54
51
|
type: :runtime
|
55
52
|
prerelease: false
|
56
53
|
version_requirements: !ruby/object:Gem::Requirement
|
57
54
|
requirements:
|
58
55
|
- - "~>"
|
59
56
|
- !ruby/object:Gem::Version
|
60
|
-
version: '0.
|
57
|
+
version: '0.128'
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 0.128.3
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: eac_rails_gem_support
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
65
|
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: '0.
|
68
|
-
- - ">="
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
version: 0.10.1
|
67
|
+
version: '0.11'
|
71
68
|
type: :development
|
72
69
|
prerelease: false
|
73
70
|
version_requirements: !ruby/object:Gem::Requirement
|
74
71
|
requirements:
|
75
72
|
- - "~>"
|
76
73
|
- !ruby/object:Gem::Version
|
77
|
-
version: '0.
|
78
|
-
- - ">="
|
79
|
-
- !ruby/object:Gem::Version
|
80
|
-
version: 0.10.1
|
74
|
+
version: '0.11'
|
81
75
|
description:
|
82
76
|
email:
|
83
77
|
executables: []
|
@@ -88,6 +82,7 @@ files:
|
|
88
82
|
- app/assets/stylesheets/eac_rails_remotes/application.scss
|
89
83
|
- app/controllers/eac_rails_remotes/instances_controller.rb
|
90
84
|
- app/models/eac_rails_remotes/instance.rb
|
85
|
+
- app/models/eac_rails_remotes/instance/class_methods.rb
|
91
86
|
- app/models/eac_rails_remotes/instance/export.rb
|
92
87
|
- app/models/eac_rails_remotes/instance/export_target_attribute.rb
|
93
88
|
- config/initializers/menus.rb
|
@@ -97,6 +92,8 @@ files:
|
|
97
92
|
- db/migrate/20230521002623_create_eac_rails_remotes_instances.rb
|
98
93
|
- lib/eac_rails_remotes.rb
|
99
94
|
- lib/eac_rails_remotes/engine.rb
|
95
|
+
- lib/eac_rails_remotes/errors/target_association_export.rb
|
96
|
+
- lib/eac_rails_remotes/errors/target_export.rb
|
100
97
|
- lib/eac_rails_remotes/export_all.rb
|
101
98
|
- lib/eac_rails_remotes/import_file.rb
|
102
99
|
- lib/eac_rails_remotes/version.rb
|