marty 0.5.14 → 0.5.15
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/README.md +1 -1
- data/app/controllers/marty/rpc_controller.rb +31 -12
- data/lib/marty/data_change.rb +16 -8
- data/lib/marty/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9c0900603f68de4a2d16347f8cd75cad55f92761
|
4
|
+
data.tar.gz: 0f927363e84dbdb332939f907f2396c766b3ecf2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 620c234afb693a0aea7480e7c299c854f39210256dedf43f6d1e1e0823c9cea7f36b0010dd0b4bffa7d3395375cdc02de3730c9692fda4db5ffc3100bb7d1860
|
7
|
+
data.tar.gz: 632298cbb98def0ddb8698fcb05eb77c37827169a9483d8a0e57a576b31a75c4f6c4359f7e7fb35d9b480314f8533dd820dd7ba02eb68bc8ecc983d5d8d35cda
|
data/README.md
CHANGED
@@ -82,4 +82,4 @@ PennyMac. We have split Marty from its original home with the goal of
|
|
82
82
|
making it generally available as a platform for working with versioned
|
83
83
|
data and scripts. However, some rspec and cucumber tests are still in
|
84
84
|
the parent and have yet to be ported. Also, documentation is sorely
|
85
|
-
lacking. Hopefully, this will be rectified
|
85
|
+
lacking. Hopefully, this will be rectified soon.
|
@@ -24,41 +24,60 @@ class Marty::RpcController < ActionController::Base
|
|
24
24
|
private
|
25
25
|
|
26
26
|
def do_eval(sname, tag, node, attrs, params, api_key)
|
27
|
-
|
27
|
+
unless attrs.is_a?(String)
|
28
|
+
logger.info "Marty::RpcController#do_eval, Bad attrs (must be a string): <#{attrs.inspect}>"
|
29
|
+
return {error: "Bad attrs"}
|
30
|
+
end
|
28
31
|
|
29
32
|
begin
|
30
33
|
attrs = ActiveSupport::JSON.decode(attrs)
|
31
|
-
rescue
|
34
|
+
rescue JSON::ParserError => e
|
35
|
+
logger.info "Marty::RpcController#do_eval, Malformed attrs (json parse error): #{attrs.inspect}, #{e.message}"
|
32
36
|
return {error: "Malformed attrs"}
|
33
37
|
end
|
34
38
|
|
35
|
-
|
36
|
-
|
39
|
+
unless attrs.is_a?(Array) && attrs.all? {|x| x.is_a? String}
|
40
|
+
logger.info "Marty::RpcController#do_eval, Malformed attrs (must be array of strings): <#{attrs.inspect}>"
|
41
|
+
return {error: "Malformed attrs"}
|
42
|
+
end
|
37
43
|
|
38
|
-
|
44
|
+
unless params.is_a?(String)
|
45
|
+
logger.info "Marty::RpcController#do_eval, Bad params (must be a string): <#{params.inspect}>"
|
46
|
+
return {error: "Bad params"}
|
47
|
+
end
|
39
48
|
|
40
49
|
begin
|
41
50
|
params = ActiveSupport::JSON.decode(params)
|
42
|
-
rescue
|
51
|
+
rescue JSON::ParserError => e
|
52
|
+
logger.info "Marty::RpcController#do_eval, Malformed params (json parse error): <#{params.inspect}>, #{e.message}"
|
43
53
|
return {error: "Malformed params"}
|
44
54
|
end
|
45
55
|
|
46
|
-
|
56
|
+
unless params.is_a?(Hash)
|
57
|
+
logger.info "Marty::RpcController#do_eval, Malformed params (must be a hash): <#{params.inspect}>"
|
58
|
+
return {error: "Malformed params"}
|
59
|
+
end
|
47
60
|
|
48
|
-
|
49
|
-
Marty::
|
61
|
+
unless Marty::ApiAuth.authorized?(sname, api_key)
|
62
|
+
logger.info "Marty::RpcController#do_eval, permission denied"
|
63
|
+
return {error: "Permission denied" }
|
64
|
+
end
|
50
65
|
|
51
66
|
begin
|
52
67
|
engine = Marty::ScriptSet.new(tag).get_engine(sname)
|
53
68
|
rescue => e
|
54
|
-
|
55
|
-
"#{tag || 'nil'}; message: #{e.message}"
|
69
|
+
err_msg = "Can't get engine: #{sname || 'nil'} with tag: " +
|
70
|
+
"#{tag || 'nil'}; message: #{e.message}"
|
71
|
+
logger.info "Marty::RpcController#do_eval, #{err_msg}"
|
72
|
+
return {error: err_msg}
|
56
73
|
end
|
57
74
|
|
58
75
|
begin
|
59
76
|
engine.evaluate_attrs(node, attrs, params)
|
60
77
|
rescue => exc
|
61
|
-
Delorean::Engine.grok_runtime_exception(exc)
|
78
|
+
err_msg = Delorean::Engine.grok_runtime_exception(exc)
|
79
|
+
logger.info "Marty::RpcController#do_eval, Evaluation error: #{err_msg}"
|
80
|
+
err_msg
|
62
81
|
end
|
63
82
|
end
|
64
83
|
end
|
data/lib/marty/data_change.rb
CHANGED
@@ -199,14 +199,22 @@ class Marty::DataChange
|
|
199
199
|
|h, res|
|
200
200
|
|
201
201
|
fk = h[:foreign_key]
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
202
|
+
rtable = h[:assoc_class].table_name
|
203
|
+
ktable = klass.table_name
|
204
|
+
|
205
|
+
# find references to the latest version in rtable (i.e. id =
|
206
|
+
# group_id). The latest referenced version should not be
|
207
|
+
# obsoleted before the row which refers to it. FIXME: this is
|
208
|
+
# not exhaustive. There are other possibities for dead
|
209
|
+
# references. e.g. referenced id != group_id.
|
210
|
+
arr =
|
211
|
+
klass.
|
212
|
+
joins("INNER JOIN #{rtable} ON #{ktable}.#{fk} = #{rtable}.group_id").
|
213
|
+
where("#{ktable}.obsoleted_dt >= ?", ts).
|
214
|
+
where("#{ktable}.created_dt < ?", ts).
|
215
|
+
where("#{rtable}.obsoleted_dt < #{ktable}.obsoleted_dt").
|
216
|
+
where("#{rtable}.group_id = #{rtable}.id").
|
217
|
+
all
|
210
218
|
|
211
219
|
arr = arr.map {|obj| Marty::DataExporter.export_attrs(klass, obj, [fk])}
|
212
220
|
|
data/lib/marty/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: marty
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arman Bostani
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2015-10-
|
15
|
+
date: 2015-10-30 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: pg
|