marty 0.5.14 → 0.5.15

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 62e4573c0a62c67a00f1496bb2a994392e5362d9
4
- data.tar.gz: 7f62a9c6a5a130e171a9e1959c1af0e08d9ad74d
3
+ metadata.gz: 9c0900603f68de4a2d16347f8cd75cad55f92761
4
+ data.tar.gz: 0f927363e84dbdb332939f907f2396c766b3ecf2
5
5
  SHA512:
6
- metadata.gz: 96a9afe241c9b14a31588bf7c695c274b6ded6f873d98b7e8d68d1f0c2de6b6a15ebdca15eaadd87b4ad5139c83a7ba3e5959d30390732cc5b5724f555495da2
7
- data.tar.gz: ad6da4446e1f074da66997fb00b8efa9e9bcd36d425bdc130b68fdf51199a0ef4fadacfdb9db44cdc9a126099bcb5ea39c844177d1d4cecb04a8ff31af661eb0
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 sometime in 2015.
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
- return {error: "Bad attrs"} unless attrs.is_a?(String)
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 MultiJson::DecodeError
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
- return {error: "Malformed attrs"} unless
36
- attrs.is_a?(Array) && attrs.all? {|x| x.is_a? String}
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
- return {error: "Bad params"} unless params.is_a?(String)
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 MultiJson::DecodeError
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
- return {error: "Malformed params"} unless params.is_a?(Hash)
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
- return {error: "Permission denied" } unless
49
- Marty::ApiAuth.authorized?(sname, api_key)
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
- return {error: "Can't get engine: #{sname || 'nil'} with tag: " +
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
@@ -199,14 +199,22 @@ class Marty::DataChange
199
199
  |h, res|
200
200
 
201
201
  fk = h[:foreign_key]
202
- attr = fk.to_s.sub(/_id$/, '').to_sym
203
- ref_table = h[:assoc_class].table_name
204
-
205
- arr = klass.joins(attr).
206
- where("#{klass.table_name}.obsoleted_dt >= ?", ts).
207
- where("#{klass.table_name}.created_dt < ?", ts).
208
- where("#{ref_table}.obsoleted_dt < ? OR #{ref_table}.created_dt >= ?", ts, ts).
209
- all
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
@@ -1,3 +1,3 @@
1
1
  module Marty
2
- VERSION = "0.5.14"
2
+ VERSION = "0.5.15"
3
3
  end
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.14
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-16 00:00:00.000000000 Z
15
+ date: 2015-10-30 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: pg