active_tools 0.0.52 → 0.1.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/active_tools.gemspec +1 -1
- data/lib/active_tools/action_pack/action_controller/path_helper.rb +4 -2
- data/lib/active_tools/active_record/adaptive_belongs_to/adapter.rb +16 -20
- data/lib/active_tools/misc/script_flow.rb +2 -2
- data/lib/active_tools/misc/uniq_content.rb +3 -1
- data/lib/active_tools/misc.rb +0 -1
- data/lib/active_tools/version.rb +1 -1
- metadata +4 -5
- data/lib/active_tools/misc/input_source.rb +0 -105
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7cf669472ca4f394eed4f88c701b210297b3cf86
|
4
|
+
data.tar.gz: 2b8b57bd4db879100eba570471c62a9ed087bd1d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 21cef49c611aa55c42934206f5fb6c93c9c209a7be14463c7f96376a2a4ecfa8161b6397ef43df8242cbb48d78bb6e1ce90ebc5e148390ba1dc595d233492c3f
|
7
|
+
data.tar.gz: e353c911a674cd4a78e6765e8a8b36feb66b9bf9625fa795089a79f52417da31e16b3a3805277564f5a5c15b3096e9fe0017afc5fdde05425e017a284d7e5e56
|
data/active_tools.gemspec
CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |gem|
|
|
14
14
|
|
15
15
|
gem.rubyforge_project = "active_tools"
|
16
16
|
|
17
|
-
gem.add_runtime_dependency "rails", ">=
|
17
|
+
gem.add_runtime_dependency "rails", ">= 5"
|
18
18
|
gem.add_development_dependency "rspec", ">= 0"
|
19
19
|
|
20
20
|
gem.files = `git ls-files`.split($/)
|
@@ -8,8 +8,10 @@ module ActiveTools
|
|
8
8
|
extend ::ActiveSupport::Concern
|
9
9
|
|
10
10
|
included do
|
11
|
-
|
12
|
-
|
11
|
+
if respond_to?(:helper_method)
|
12
|
+
include ComplexHelpers
|
13
|
+
helper_method :path?, :action?, :controller?, :current_action, :current_controller, :http_referer
|
14
|
+
end
|
13
15
|
end
|
14
16
|
|
15
17
|
def current_action
|
@@ -43,11 +43,12 @@ module ActiveTools
|
|
43
43
|
store_backup!
|
44
44
|
create_template!
|
45
45
|
target.send("#{name}=", value)
|
46
|
-
owner.send(:
|
46
|
+
owner.send(:attributes_changed_by_setter).except!(local_attribute) if owner.changes[local_attribute].try(:last) == owner.changes[local_attribute].try(:first)
|
47
47
|
if @backup.present? && same_records?(@backup, target, :attributes => @remote_attributes)
|
48
48
|
restore_backup!
|
49
49
|
end
|
50
50
|
end
|
51
|
+
value
|
51
52
|
end
|
52
53
|
|
53
54
|
def try_nullify
|
@@ -77,20 +78,16 @@ module ActiveTools
|
|
77
78
|
|
78
79
|
def try_restore_refreshed_backup
|
79
80
|
if updateable_backup?
|
80
|
-
warn "Adaptive going to update: <#{@backup.class.name}: #{@backup.class.primary_key}: #{@backup.send(@backup.class.primary_key)}>"
|
81
|
+
warn "Adaptive is going to update: <#{@backup.class.name}: #{@backup.class.primary_key}: #{@backup.send(@backup.class.primary_key)}>"
|
81
82
|
@backup.attributes = template_attributes
|
82
|
-
|
83
|
-
|
84
|
-
true
|
85
|
-
else
|
86
|
-
false
|
87
|
-
end
|
83
|
+
restore_backup!
|
84
|
+
true
|
88
85
|
end
|
89
86
|
end
|
90
87
|
|
91
88
|
def try_commit_existed
|
92
89
|
if @template.present? && @uniq_by.any? && (existed = detect_existed) && !(@backup.present? && same_records?(@backup, existed, :attributes => @uniq_by))
|
93
|
-
warn "Adaptive fetching existed <#{existed.class.name}: #{existed.class.primary_key}: #{existed.send(existed.class.primary_key)}>"
|
90
|
+
warn "Adaptive is fetching existed <#{existed.class.name}: #{existed.class.primary_key}: #{existed.send(existed.class.primary_key)}>"
|
94
91
|
self.target = existed
|
95
92
|
if updateable_backup?
|
96
93
|
@backup.mark_for_destruction
|
@@ -101,7 +98,7 @@ module ActiveTools
|
|
101
98
|
|
102
99
|
def try_destroy_backup
|
103
100
|
if destroyable_backup?
|
104
|
-
warn "Adaptive destroying backed up: <#{@backup.class.name}: #{@backup.class.primary_key}: #{@backup.send(@backup.class.primary_key)}>"
|
101
|
+
warn "Adaptive is destroying backed up: <#{@backup.class.name}: #{@backup.class.primary_key}: #{@backup.send(@backup.class.primary_key)}>"
|
105
102
|
begin
|
106
103
|
@backup.destroy
|
107
104
|
rescue ::ActiveRecord::StaleObjectError
|
@@ -116,7 +113,7 @@ module ActiveTools
|
|
116
113
|
|
117
114
|
def try_destroy_target
|
118
115
|
if destroyable_target?
|
119
|
-
warn "Adaptive destroying target: <#{target.class.name}: #{target.class.primary_key}: #{target.send(target.class.primary_key)}>"
|
116
|
+
warn "Adaptive is destroying target: <#{target.class.name}: #{target.class.primary_key}: #{target.send(target.class.primary_key)}>"
|
120
117
|
begin
|
121
118
|
target.destroy
|
122
119
|
rescue ::ActiveRecord::StaleObjectError
|
@@ -134,15 +131,13 @@ module ActiveTools
|
|
134
131
|
end
|
135
132
|
|
136
133
|
def update_target_if_changed!
|
137
|
-
if target.changes.any?
|
138
|
-
warn "Adaptive updating: <#{target.class.name}: #{target.class.primary_key}: #{target.send(target.class.primary_key)}>"
|
134
|
+
if target && target.changes.any?
|
135
|
+
warn "Adaptive is updating: <#{target.class.name}: #{target.class.primary_key}: #{target.send(target.class.primary_key)}>"
|
139
136
|
begin
|
140
137
|
target.save
|
141
138
|
rescue ::ActiveRecord::StaleObjectError
|
142
|
-
target.reload
|
143
139
|
update_target_if_changed!
|
144
140
|
rescue ::ActiveRecord::StatementInvalid
|
145
|
-
target.reload
|
146
141
|
update_target_if_changed!
|
147
142
|
end
|
148
143
|
end
|
@@ -169,26 +164,26 @@ module ActiveTools
|
|
169
164
|
outer_values.deep_merge!(values[:outer_values])
|
170
165
|
where_values.deep_merge!(values[:where_values])
|
171
166
|
else
|
172
|
-
where_values[attribute] = @template[attribute]
|
167
|
+
where_values[attribute] = @template[attribute]
|
173
168
|
end
|
174
169
|
end
|
175
170
|
klass.includes(outer_values).where(where_values).limit(1).first
|
176
171
|
end
|
177
172
|
|
178
173
|
def nullify_target?
|
179
|
-
target.present? && @nullify_if.try(:call,
|
174
|
+
target.present? && @nullify_if.try(:call, target, owner) # .reload is NOT acceptable (flushes changes)
|
180
175
|
end
|
181
176
|
|
182
177
|
def updateable_backup?
|
183
|
-
@backup.try(:persisted?) && @update_if.try(:call, @backup.reload, owner)
|
178
|
+
@backup.try(:persisted?) && @update_if.try(:call, @backup.reload, owner) # .reload is acceptable
|
184
179
|
end
|
185
180
|
|
186
181
|
def destroyable_backup?
|
187
|
-
@backup.try(:persisted?) && (!@backup.destroyed?||@backup.marked_for_destruction?) && @destroy_if.try(:call, @backup.reload, owner)
|
182
|
+
@backup.try(:persisted?) && (!@backup.destroyed?||@backup.marked_for_destruction?) && @destroy_if.try(:call, @backup.reload, owner) # .reload is acceptable
|
188
183
|
end
|
189
184
|
|
190
185
|
def destroyable_target?
|
191
|
-
target.try(:persisted?) && (!target.destroyed?||target.marked_for_destruction?) && @destroy_if.try(:call, target.reload, owner)
|
186
|
+
target.try(:persisted?) && (!target.destroyed?||target.marked_for_destruction?) && @destroy_if.try(:call, target.reload, owner) # .reload is acceptable
|
192
187
|
end
|
193
188
|
|
194
189
|
def attributes(object, *attrs)
|
@@ -215,6 +210,7 @@ module ActiveTools
|
|
215
210
|
end
|
216
211
|
self.target = @backup
|
217
212
|
@backup = nil
|
213
|
+
true
|
218
214
|
end
|
219
215
|
end
|
220
216
|
|
@@ -30,10 +30,10 @@ module ActiveTools
|
|
30
30
|
end
|
31
31
|
if content
|
32
32
|
case request.format
|
33
|
-
when Mime
|
33
|
+
when Mime[:js] then
|
34
34
|
uniq_content_storage.append_content(content, Misc::DEFAULT_JS_FLOW_KEY)
|
35
35
|
nil
|
36
|
-
when Mime
|
36
|
+
when Mime[:html] then
|
37
37
|
volume = options.delete(:volume)
|
38
38
|
unless uniq_content_storage.remembered?(content, volume)
|
39
39
|
flow = uniq_content_storage.remember(content, volume)
|
data/lib/active_tools/misc.rb
CHANGED
data/lib/active_tools/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Valery Kvon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-08-
|
11
|
+
date: 2016-08-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '5'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '5'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,7 +100,6 @@ files:
|
|
100
100
|
- lib/active_tools/core_extension/string_round_with.rb
|
101
101
|
- lib/active_tools/engine.rb
|
102
102
|
- lib/active_tools/misc.rb
|
103
|
-
- lib/active_tools/misc/input_source.rb
|
104
103
|
- lib/active_tools/misc/script_flow.rb
|
105
104
|
- lib/active_tools/misc/uniq_content.rb
|
106
105
|
- lib/active_tools/railtie.rb
|
@@ -1,105 +0,0 @@
|
|
1
|
-
module ActiveTools
|
2
|
-
module Misc
|
3
|
-
module InputSource
|
4
|
-
module ErrorsExtension
|
5
|
-
extend ::ActiveSupport::Concern
|
6
|
-
|
7
|
-
included do
|
8
|
-
delegate :field_of, :to => :@base
|
9
|
-
end
|
10
|
-
|
11
|
-
def fields
|
12
|
-
keys.map {|attribute| field_of(attribute)}.compact.tap do |names|
|
13
|
-
names.instance_eval do
|
14
|
-
def ids
|
15
|
-
self.map(&:to_id)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
module ConverseParameters
|
23
|
-
def converse_parameters(value, prefix = nil, parent = nil)
|
24
|
-
case value
|
25
|
-
when Hash
|
26
|
-
value.each do |k, v|
|
27
|
-
new_prefix = prefix ? "#{prefix}[#{k}]" : k
|
28
|
-
converse_parameters(v, new_prefix, value)
|
29
|
-
end
|
30
|
-
when Array
|
31
|
-
value.each do |e|
|
32
|
-
new_prefix = "#{prefix}[]"
|
33
|
-
converse_parameters(e, new_prefix, value)
|
34
|
-
end
|
35
|
-
else
|
36
|
-
value
|
37
|
-
end
|
38
|
-
value.tap do |v|
|
39
|
-
v.singleton_class.send(:undef_method, :belongs_to) if v.respond_to?(:belongs_to)
|
40
|
-
v.define_singleton_method :belongs_to do
|
41
|
-
parent
|
42
|
-
end
|
43
|
-
v.singleton_class.send(:undef_method, :input_source) if v.respond_to?(:input_source)
|
44
|
-
v.define_singleton_method :input_source do
|
45
|
-
prefix.to_s
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
module RequestExtension
|
52
|
-
include ConverseParameters
|
53
|
-
|
54
|
-
private
|
55
|
-
def normalize_parameters(value)
|
56
|
-
converse_parameters(super)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
module AttributesAssignment
|
61
|
-
def assign_attributes(*args)
|
62
|
-
new_attributes = args.first
|
63
|
-
if new_attributes.respond_to?(:input_source)
|
64
|
-
@input_source = new_attributes.input_source
|
65
|
-
end
|
66
|
-
super(*args)
|
67
|
-
end
|
68
|
-
|
69
|
-
def field_of(attribute)
|
70
|
-
if @input_source && has_attribute?(attribute)
|
71
|
-
"#{@input_source}[#{attribute}]".tap do |input_source|
|
72
|
-
input_source.instance_eval do
|
73
|
-
def to_id
|
74
|
-
self.gsub(/\]\[|[^-a-zA-Z0-9:.]/, "_").sub(/_$/, "")
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
module OnLoadActionController
|
86
|
-
::ActionDispatch::Request.send(:include, Misc::InputSource::RequestExtension)
|
87
|
-
|
88
|
-
def converse(hash, key)
|
89
|
-
converse_parameters(hash[key], key)
|
90
|
-
end
|
91
|
-
|
92
|
-
private
|
93
|
-
include Misc::InputSource::ConverseParameters
|
94
|
-
end
|
95
|
-
|
96
|
-
module OnLoadActiveRecord
|
97
|
-
::ActiveModel::Errors.send(:include, Misc::InputSource::ErrorsExtension)
|
98
|
-
|
99
|
-
if Rails.version >= "3.2.9"
|
100
|
-
::ActiveRecord::AttributeAssignment.send(:include, Misc::InputSource::AttributesAssignment)
|
101
|
-
else
|
102
|
-
include Misc::InputSource::AttributesAssignment
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|