marty 2.5.2 → 2.5.4

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.
Files changed (181) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +4 -0
  3. data/.rubocop.yml +7 -0
  4. data/.rubocop_todo.yml +11 -589
  5. data/Gemfile +9 -9
  6. data/Gemfile.lock +1 -1
  7. data/Rakefile +1 -3
  8. data/app/components/marty/api_auth_view.rb +3 -3
  9. data/app/components/marty/api_config_view.rb +8 -8
  10. data/app/components/marty/api_log_view.rb +16 -20
  11. data/app/components/marty/auth_app.rb +6 -6
  12. data/app/components/marty/base_rule_view.rb +27 -19
  13. data/app/components/marty/config_view.rb +12 -9
  14. data/app/components/marty/data_grid_view.rb +26 -26
  15. data/app/components/marty/delorean_rule_view.rb +0 -1
  16. data/app/components/marty/event_view.rb +27 -27
  17. data/app/components/marty/extras/layout.rb +26 -26
  18. data/app/components/marty/extras/misc.rb +2 -2
  19. data/app/components/marty/grid.rb +13 -13
  20. data/app/components/marty/grid_append_only.rb +0 -1
  21. data/app/components/marty/import_type_view.rb +13 -13
  22. data/app/components/marty/import_view.rb +17 -16
  23. data/app/components/marty/log_view.rb +16 -14
  24. data/app/components/marty/main_auth_app.rb +59 -59
  25. data/app/components/marty/main_auth_app/client/main_auth_app.js +3 -3
  26. data/app/components/marty/mcfly_grid_panel.rb +10 -10
  27. data/app/components/marty/new_posting_form.rb +11 -11
  28. data/app/components/marty/new_posting_window.rb +0 -1
  29. data/app/components/marty/posting_grid.rb +12 -13
  30. data/app/components/marty/promise_view.rb +6 -6
  31. data/app/components/marty/report_form.rb +50 -53
  32. data/app/components/marty/report_select.rb +27 -27
  33. data/app/components/marty/reporting.rb +4 -4
  34. data/app/components/marty/script_form.rb +40 -42
  35. data/app/components/marty/script_grid.rb +24 -24
  36. data/app/components/marty/script_tester.rb +40 -42
  37. data/app/components/marty/scripting.rb +25 -27
  38. data/app/components/marty/simple_app.rb +24 -9
  39. data/app/components/marty/tag_grid.rb +12 -13
  40. data/app/components/marty/user_view.rb +35 -35
  41. data/app/controllers/marty/application_controller.rb +3 -4
  42. data/app/controllers/marty/components_controller.rb +1 -1
  43. data/app/controllers/marty/delayed_job_controller.rb +1 -0
  44. data/app/controllers/marty/diagnostic/controller.rb +4 -6
  45. data/app/controllers/marty/job_controller.rb +6 -6
  46. data/app/controllers/marty/report_controller.rb +11 -11
  47. data/app/controllers/marty/rpc_controller.rb +15 -16
  48. data/app/helpers/marty/script_set.rb +4 -4
  49. data/app/models/marty/api_auth.rb +4 -5
  50. data/app/models/marty/api_config.rb +1 -1
  51. data/app/models/marty/base.rb +9 -8
  52. data/app/models/marty/base_rule.rb +18 -13
  53. data/app/models/marty/config.rb +4 -5
  54. data/app/models/marty/data_grid.rb +157 -181
  55. data/app/models/marty/delorean_rule.rb +63 -62
  56. data/app/models/marty/enum.rb +1 -1
  57. data/app/models/marty/event.rb +56 -59
  58. data/app/models/marty/helper.rb +38 -6
  59. data/app/models/marty/import_type.rb +6 -6
  60. data/app/models/marty/log.rb +3 -2
  61. data/app/models/marty/name_validator.rb +3 -2
  62. data/app/models/marty/pg_enum.rb +3 -4
  63. data/app/models/marty/posting.rb +20 -24
  64. data/app/models/marty/promise.rb +28 -30
  65. data/app/models/marty/script.rb +30 -28
  66. data/app/models/marty/tag.rb +8 -8
  67. data/app/models/marty/token.rb +2 -2
  68. data/app/models/marty/user.rb +24 -23
  69. data/app/models/marty/vw_promise.rb +10 -11
  70. data/config/routes.rb +2 -2
  71. data/delorean/blame_report.dl +268 -0
  72. data/{spec/dummy/delorean/fields.dl → delorean/marty_fields.dl} +8 -0
  73. data/delorean/table_report.dl +34 -0
  74. data/docker-compose.dummy.yml +2 -3
  75. data/lib/marty/aws/base.rb +8 -8
  76. data/lib/marty/aws/request.rb +4 -4
  77. data/lib/marty/cache_adapters/mcfly_ruby_cache.rb +1 -0
  78. data/lib/marty/content_handler.rb +25 -25
  79. data/lib/marty/data_change.rb +49 -71
  80. data/lib/marty/data_conversion.rb +20 -28
  81. data/lib/marty/data_exporter.rb +25 -28
  82. data/lib/marty/data_importer.rb +25 -27
  83. data/lib/marty/engine.rb +1 -2
  84. data/lib/marty/json_schema.rb +22 -24
  85. data/lib/marty/logger.rb +6 -9
  86. data/lib/marty/mcfly_model.rb +20 -24
  87. data/lib/marty/migrations.rb +37 -35
  88. data/lib/marty/monkey.rb +33 -33
  89. data/lib/marty/permissions.rb +18 -18
  90. data/lib/marty/promise_job.rb +17 -17
  91. data/lib/marty/promise_proxy.rb +6 -6
  92. data/lib/marty/relation.rb +6 -7
  93. data/lib/marty/rpc_call.rb +13 -12
  94. data/lib/marty/rule_script_set.rb +32 -28
  95. data/lib/marty/schema_helper.rb +37 -51
  96. data/lib/marty/util.rb +25 -24
  97. data/lib/marty/version.rb +1 -1
  98. data/lib/marty/xl.rb +121 -115
  99. data/make-dummy.mk +3 -0
  100. data/marty.gemspec +21 -21
  101. data/other/marty/api/base.rb +34 -35
  102. data/other/marty/diagnostic/aws/ec2_instance.rb +8 -8
  103. data/other/marty/diagnostic/base.rb +13 -14
  104. data/other/marty/diagnostic/collection.rb +2 -1
  105. data/other/marty/diagnostic/connections.rb +8 -6
  106. data/other/marty/diagnostic/database.rb +1 -0
  107. data/other/marty/diagnostic/delayed_job_version.rb +7 -9
  108. data/other/marty/diagnostic/delayed_job_worker_total_count.rb +1 -1
  109. data/other/marty/diagnostic/delayed_job_workers.rb +1 -1
  110. data/other/marty/diagnostic/environment_variables.rb +17 -15
  111. data/other/marty/diagnostic/fatal.rb +1 -1
  112. data/other/marty/diagnostic/node.rb +5 -9
  113. data/other/marty/diagnostic/nodes.rb +7 -5
  114. data/other/marty/diagnostic/packer.rb +7 -7
  115. data/other/marty/diagnostic/reporter.rb +24 -27
  116. data/other/marty/diagnostic/version.rb +3 -5
  117. data/script/rails +2 -1
  118. data/spec/controllers/application_controller_spec.rb +6 -6
  119. data/spec/controllers/delayed_job_controller_spec.rb +4 -4
  120. data/spec/controllers/diagnostic/controller_spec.rb +59 -60
  121. data/spec/controllers/job_controller_spec.rb +68 -69
  122. data/spec/controllers/rpc_controller_spec.rb +353 -359
  123. data/spec/controllers/rpc_import_spec.rb +15 -16
  124. data/spec/dummy/delorean/blame_report.dl +110 -15
  125. data/spec/dummy/delorean/data_report.dl +4 -4
  126. data/spec/dummy/delorean/marty_fields.dl +63 -0
  127. data/spec/dummy/delorean/table_report.dl +34 -0
  128. data/spec/features/auth_app_spec.rb +1 -2
  129. data/spec/features/data_import_spec.rb +2 -3
  130. data/spec/features/enum_spec.rb +42 -46
  131. data/spec/features/jobs_dashboard_spec.rb +14 -8
  132. data/spec/features/log_view_spec.rb +40 -43
  133. data/spec/features/reporting_spec.rb +15 -15
  134. data/spec/features/rule_spec.rb +195 -190
  135. data/spec/features/scripting_spec.rb +17 -20
  136. data/spec/features/scripting_test_spec.rb +32 -33
  137. data/spec/features/user_view_spec.rb +15 -17
  138. data/spec/job_helper.rb +11 -11
  139. data/spec/lib/data_blame_spec.rb +82 -0
  140. data/spec/lib/data_exporter_spec.rb +31 -32
  141. data/spec/lib/data_importer_spec.rb +382 -395
  142. data/spec/lib/delorean_query_spec.rb +117 -119
  143. data/spec/lib/json_schema_spec.rb +382 -392
  144. data/spec/lib/logger_spec.rb +23 -24
  145. data/spec/lib/mcfly_model_spec.rb +112 -109
  146. data/spec/lib/migrations_spec.rb +10 -10
  147. data/spec/lib/struct_compare_spec.rb +6 -6
  148. data/spec/lib/table_report_spec.rb +90 -0
  149. data/spec/lib/xl_spec.rb +63 -65
  150. data/spec/lib/xl_styles_spec.rb +16 -19
  151. data/spec/models/api_auth_spec.rb +30 -30
  152. data/spec/models/config_spec.rb +32 -32
  153. data/spec/models/data_grid_spec.rb +642 -655
  154. data/spec/models/event_spec.rb +96 -88
  155. data/spec/models/import_type_spec.rb +20 -20
  156. data/spec/models/posting_spec.rb +35 -35
  157. data/spec/models/promise_spec.rb +5 -5
  158. data/spec/models/rule_spec.rb +280 -269
  159. data/spec/models/script_spec.rb +27 -18
  160. data/spec/models/user_spec.rb +9 -9
  161. data/spec/other/diagnostic/base_spec.rb +20 -19
  162. data/spec/other/diagnostic/collection_spec.rb +6 -5
  163. data/spec/other/diagnostic/delayed_job_version_spec.rb +1 -1
  164. data/spec/other/diagnostic/delayed_job_workers_spec.rb +8 -8
  165. data/spec/other/diagnostic/reporter_spec.rb +31 -33
  166. data/spec/spec_helper.rb +5 -5
  167. data/spec/support/chromedriver.rb +3 -5
  168. data/spec/support/components/netzke_combobox.rb +1 -1
  169. data/spec/support/components/netzke_grid.rb +17 -17
  170. data/spec/support/custom_matchers.rb +2 -2
  171. data/spec/support/download_helper.rb +1 -1
  172. data/spec/support/helper.rb +1 -2
  173. data/spec/support/netzke.rb +31 -31
  174. data/spec/support/performance_helper.rb +8 -8
  175. data/spec/support/post_run_logger.rb +1 -2
  176. data/spec/support/setup.rb +1 -4
  177. data/spec/support/shared_connection.rb +2 -2
  178. data/spec/support/structure_compare.rb +21 -22
  179. data/spec/support/suite.rb +1 -2
  180. data/spec/support/users.rb +5 -6
  181. metadata +32 -26
@@ -4,7 +4,7 @@ module Marty::Diagnostic; class DelayedJobWorkerTotalCount < Base
4
4
  [c['application_name'], c['client_addr'] || '127.0.0.1'] if
5
5
  c['application_name'].include?('delayed')
6
6
  end.compact.uniq.count
7
- {'Delayed Workers' => count.zero? ? error(count) : count}
7
+ { 'Delayed Workers' => count.zero? ? error(count) : count }
8
8
  end
9
9
  end
10
10
  end
@@ -6,7 +6,7 @@ module Marty::Diagnostic; class DelayedJobWorkers < Base
6
6
  name = c['application_name']
7
7
  name if name.include?('delayed') && (ip == my_ip || ip == '127.0.0.1')
8
8
  end.compact.uniq.count
9
- {'Delayed Workers / Node' => workers.zero? ? error(workers) : workers}
9
+ { 'Delayed Workers / Node' => workers.zero? ? error(workers) : workers }
10
10
  end
11
11
  end
12
12
  end
@@ -3,37 +3,39 @@ module Marty::Diagnostic; class EnvironmentVariables < Base
3
3
  env
4
4
  end
5
5
 
6
- def self.env filter=''
6
+ def self.env filter = ''
7
7
  env = ENV.clone
8
8
 
9
9
  to_delete = (Marty::Config['DIAG_ENV_BLOCK'] || []).map(&:upcase) + [
10
- 'SCRIPT_URI', 'SCRIPT_URL']
10
+ 'SCRIPT_URI', 'SCRIPT_URL'
11
+ ]
11
12
 
12
13
  to_obfus = (Marty::Config['DIAG_ENV_OBFUSCATE'] || []).map(&:upcase) + [
13
- 'SECRET_KEY_BASE']
14
+ 'SECRET_KEY_BASE'
15
+ ]
14
16
 
15
17
  to_block = (Marty::Config['DIAG_ENV_BLOCK_IF_INCL'] || []).map(&:upcase) + [
16
- 'ACCESS', 'SECRET', 'PASSWORD', 'DEBUG']
18
+ 'ACCESS', 'SECRET', 'PASSWORD', 'DEBUG'
19
+ ]
17
20
 
18
- to_delete.each{|k| env.delete(k)}
21
+ to_delete.each { |k| env.delete(k) }
19
22
 
20
- to_obfus.each{|k| env[k] = env[k][0,4] if env[k]}
23
+ to_obfus.each { |k| env[k] = env[k][0, 4] if env[k] }
21
24
 
22
- env.sort.each_with_object({}){|(k,v),h|
23
- h[k] = v if to_block.all?{|b| !k.include?(b)} && k.include?(filter)}
25
+ env.sort.each_with_object({}) do |(k, v), h|
26
+ h[k] = v if to_block.all? { |b| !k.include?(b) } && k.include?(filter)
27
+ end
24
28
  end
25
29
 
26
30
  # overwritten to only return inconsitent data
27
31
  def self.apply_consistency data
28
32
  diff = get_difference(data)
29
- data.each_with_object({}){
30
- |(node, diagnostic), new_data|
31
- new_data[node] = diagnostic.each_with_object({}){
32
- |(test, info), new_diagnostic|
33
- new_diagnostic[test] = info + {'consistent' => false} if
33
+ data.each_with_object({}) do |(node, diagnostic), new_data|
34
+ new_data[node] = diagnostic.each_with_object({}) do |(test, info), new_diagnostic|
35
+ new_diagnostic[test] = info + { 'consistent' => false } if
34
36
  diff.include?(test)
35
- }
36
- }
37
+ end
38
+ end
37
39
  end
38
40
  end
39
41
  end
@@ -2,7 +2,7 @@ module Marty::Diagnostic; class Fatal < Base
2
2
  def self.message msg, opts = {}
3
3
  node = opts[:node] || Node.my_ip
4
4
  type = opts[:type] || 'RuntimeError'
5
- {name.demodulize => {node => {type => error(msg)}}}
5
+ { name.demodulize => { node => { type => error(msg) } } }
6
6
  end
7
7
  end
8
8
  end
@@ -1,21 +1,17 @@
1
1
  module Marty::Diagnostic::Node
2
2
  def self.my_ip
3
- begin
4
- Socket.ip_address_list.detect{|intf| intf.ipv4_private?}.ip_address
5
- rescue => e
3
+ Socket.ip_address_list.detect(&:ipv4_private?).ip_address
4
+ rescue StandardError => e
6
5
  e.message
7
- end
8
6
  end
9
7
 
10
-
11
-
12
8
  def self.get_target_connections target
13
- Marty::Diagnostic::Database.current_connections.select{|conn|
9
+ Marty::Diagnostic::Database.current_connections.select do |conn|
14
10
  conn['application_name'].include?(target)
15
- }.map{|conn|
11
+ end.map do |conn|
16
12
  conn['client_addr'] == '127.0.0.1' ? my_ip :
17
13
  conn['client_addr'] || '127.0.0.1'
18
- }
14
+ end
19
15
  end
20
16
 
21
17
  def self.get_nodes
@@ -4,7 +4,7 @@ module Marty::Diagnostic; class Nodes < Base
4
4
  diagnostic_fn aggregatable: false do
5
5
  begin
6
6
  pg_nodes = Node.get_nodes.sort
7
- rescue => e
7
+ rescue StandardError => e
8
8
  next error(e.message)
9
9
  end
10
10
 
@@ -13,7 +13,7 @@ module Marty::Diagnostic; class Nodes < Base
13
13
 
14
14
  begin
15
15
  instance_data = Marty::Diagnostic::Aws::Ec2Instance.new
16
- rescue => e
16
+ rescue StandardError => e
17
17
  next error(pg_nodes.join("\n") +
18
18
  "\nAws Communication Error: #{e.message}")
19
19
  end
@@ -25,7 +25,7 @@ module Marty::Diagnostic; class Nodes < Base
25
25
  # generate instance information when there is an issue
26
26
  # between aws and postgres
27
27
  instances = instance_data.instances
28
- {'nodes' => error("There is a discrepancy between nodes connected to "\
28
+ { 'nodes' => error('There is a discrepancy between nodes connected to '\
29
29
  "Postgres and those discovered through AWS EC2.\n"\
30
30
  "Postgres: \n#{pg_nodes.join("\n")}\n"\
31
31
  "AWS: \n#{a_nodes.join("\n")}"),
@@ -35,19 +35,21 @@ module Marty::Diagnostic; class Nodes < Base
35
35
  'terminated' => error_if(instances.terminated),
36
36
  'stopping' => error_if(instances.stopping),
37
37
  'stopped' => error_if(instances.stopped),
38
- }.delete_if{|k,v| v.empty?}
39
- rescue => e
38
+ }.delete_if { |k, v| v.empty? }
39
+ rescue StandardError => e
40
40
  error(e.message)
41
41
  end
42
42
  end
43
43
 
44
44
  def self.valid_if arr
45
45
  return arr.join("\n") unless arr.empty?
46
+
46
47
  error('---')
47
48
  end
48
49
 
49
50
  def self.error_if arr
50
51
  return arr if arr.empty?
52
+
51
53
  error(arr.join("\n"))
52
54
  end
53
55
  end
@@ -1,21 +1,21 @@
1
1
  module Marty::Diagnostic; module Packer
2
- def pack include_ip=true
2
+ def pack include_ip = true
3
3
  info = process(yield)
4
- include_ip ? {Node.my_ip => info} : info
4
+ include_ip ? { Node.my_ip => info } : info
5
5
  end
6
6
 
7
7
  def process obj
8
8
  obj.is_a?(Hash) ? process_hash(obj) :
9
- {name.demodulize => create_info(obj.to_s)}
9
+ { name.demodulize => create_info(obj.to_s) }
10
10
  end
11
11
 
12
12
  def process_hash data
13
- return {name.demodulize => data} if is_valid_info?(data)
13
+ return { name.demodulize => data } if is_valid_info?(data)
14
14
 
15
- data.each_with_object({}) do
16
- |(k, v), h|
15
+ data.each_with_object({}) do |(k, v), h|
17
16
  if v.is_a?(Hash)
18
17
  raise "Invalid Diagnostic Info #{v}" unless is_valid_info?(v)
18
+
19
19
  h[k] = v
20
20
  else
21
21
  h[k] = create_info(v)
@@ -23,7 +23,7 @@ module Marty::Diagnostic; module Packer
23
23
  end
24
24
  end
25
25
 
26
- def create_info description, status=true, consistent=nil
26
+ def create_info description, status = true, consistent = nil
27
27
  {
28
28
  'description' => description.to_s,
29
29
  'status' => status,
@@ -9,24 +9,26 @@ module Marty::Diagnostic; class Reporter < Request
9
9
  self.request = request
10
10
 
11
11
  ops = op.split(/,\s*/).uniq - [unresolve_diagnostic(self)]
12
- reps = ops.select{|o| reports.keys.include?(o)}
12
+ reps = ops.select { |o| reports.keys.include?(o) }
13
13
 
14
- self.diagnostics = ((ops - reps) + reps.map{|r| reports[r]}.flatten).uniq.
15
- map{|d| resolve_diagnostic(d)}
14
+ self.diagnostics = ((ops - reps) + reps.map { |r| reports[r] }.flatten).uniq.
15
+ map { |d| resolve_diagnostic(d) }
16
16
 
17
- self.scope == 'local' ? generate : aggregate
17
+ scope == 'local' ? generate : aggregate
18
18
  end
19
19
 
20
20
  private
21
+
21
22
  def self.resolve_diagnostic diag_name
22
23
  diag_name = diag_name.camelize
23
24
  klass = nil
24
- self.namespaces.each do |n|
25
+ namespaces.each do |n|
25
26
  klass = (n + '::Diagnostic::' + diag_name).constantize rescue nil
26
27
  break if klass
27
28
  end
28
29
  raise NameError.new("#{diag_name} could not be resolved by #{name}") if
29
30
  klass.nil?
31
+
30
32
  klass
31
33
  end
32
34
 
@@ -35,50 +37,45 @@ module Marty::Diagnostic; class Reporter < Request
35
37
  end
36
38
 
37
39
  def self.generate
38
- diagnostics.each_with_object({}){
39
- |d, h|
40
+ diagnostics.each_with_object({}) do |d, h|
40
41
  begin
41
42
  h[d.name.demodulize] = d.generate
42
- rescue => e
43
+ rescue StandardError => e
43
44
  h.deep_merge!(Fatal.message(e.message, type: d.name.demodulize))
44
45
  end
45
- }
46
+ end
46
47
  end
47
48
 
48
49
  def self.aggregate
49
50
  data = consistency([generate, get_remote_diagnostics].reduce(:deep_merge))
50
- {'data' => data, 'errors' => errors(data)}
51
+ { 'data' => data, 'errors' => errors(data) }
51
52
  end
52
53
 
53
54
  def self.consistency data
54
- data.each_with_object({}){
55
- |(klass, result), h|
55
+ data.each_with_object({}) do |(klass, result), h|
56
56
  h[klass] = resolve_diagnostic(klass).apply_consistency(result)
57
- }
57
+ end
58
58
  end
59
59
 
60
60
  def self.errors data
61
- data.each_with_object({}){
62
- |(klass, result), new_data|
63
- new_data[klass] = result.each_with_object({}){
64
- |(node, diagnostic), new_result|
65
- new_result[node] = diagnostic.each_with_object({}){
66
- |(test, info), new_diagnostic|
61
+ data.each_with_object({}) do |(klass, result), new_data|
62
+ new_data[klass] = result.each_with_object({}) do |(node, diagnostic), new_result|
63
+ new_result[node] = diagnostic.each_with_object({}) do |(test, info), new_diagnostic|
67
64
  new_diagnostic[test] = info unless
68
65
  info['status'] && (scope == 'local' || info['consistent'])
69
- }
66
+ end
70
67
  new_result.delete(node) if new_result[node].empty?
71
- }
68
+ end
72
69
  new_data.delete(klass) if new_data[klass].empty?
73
- }
70
+ end
74
71
  end
75
72
 
76
73
  def self.displays result
77
- result.map{|d, r| resolve_diagnostic(d).display(r)}.sum
74
+ result.map { |d, r| resolve_diagnostic(d).display(r) }.sum
78
75
  end
79
76
 
80
77
  def self.get_remote_diagnostics
81
- ops = diagnostics.map{|d| unresolve_diagnostic(d) if d.aggregatable}.compact
78
+ ops = diagnostics.map { |d| unresolve_diagnostic(d) if d.aggregatable }.compact
82
79
  return {} if ops.empty?
83
80
 
84
81
  nodes = Node.get_nodes - [Node.my_ip]
@@ -97,11 +94,11 @@ module Marty::Diagnostic; class Reporter < Request
97
94
  req.verify_mode = OpenSSL::SSL::VERIFY_NONE
98
95
 
99
96
  begin
100
- response = req.start {|http| http.get(uri.to_s)}
101
- next JSON.parse(response.body) if response.code == "200"
97
+ response = req.start { |http| http.get(uri.to_s) }
98
+ next JSON.parse(response.body) if response.code == '200'
102
99
 
103
100
  Fatal.message(response.body, type: response.message, node: uri.host)
104
- rescue => e
101
+ rescue StandardError => e
105
102
  Fatal.message(e.message, type: e.class, node: uri.host)
106
103
  end
107
104
  end
@@ -2,8 +2,8 @@ module Marty::Diagnostic; class Version < Base
2
2
  diagnostic_fn do
3
3
  begin
4
4
  message = `cd #{Rails.root.to_s}; git describe --tags --always;`.strip
5
- rescue
6
- message = error("Failed accessing git")
5
+ rescue StandardError
6
+ message = error('Failed accessing git')
7
7
  end
8
8
  rbv = "#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL} (#{RUBY_PLATFORM})"
9
9
  {
@@ -22,11 +22,9 @@ module Marty::Diagnostic; class Version < Base
22
22
  end
23
23
 
24
24
  def self.db_schema
25
- begin
26
25
  Database.db_schema
27
- rescue => e
26
+ rescue StandardError => e
28
27
  error(e.message)
29
- end
30
28
  end
31
29
  end
32
30
  end
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
- # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
2
+ # This command will automatically be run when you run "rails"
3
+ # with Rails 3 gems installed from the root of your application.
3
4
 
4
5
  ENGINE_ROOT = File.expand_path('../..', __FILE__)
5
6
  ENGINE_PATH = File.expand_path('../../lib/marty/engine', __FILE__)
@@ -8,7 +8,7 @@ module Marty
8
8
  end
9
9
 
10
10
  describe 'authentication' do
11
- it "should allow a registered user to log in" do
11
+ it 'should allow a registered user to log in' do
12
12
  allow(Rails.configuration.marty).to receive(:auth_source).
13
13
  and_return('local')
14
14
 
@@ -20,8 +20,8 @@ module Marty
20
20
  expect(Marty::User.current).to be_nil
21
21
  end
22
22
 
23
- it "should allow a registered user to log in when the database " +
24
- "is in recovery mode" do
23
+ it 'should allow a registered user to log in when the database ' +
24
+ 'is in recovery mode' do
25
25
  allow(Marty::Util).to receive(:db_in_recovery?).and_return(true)
26
26
  allow(Rails.configuration.marty).to receive(:auth_source).
27
27
  and_return('local')
@@ -34,14 +34,14 @@ module Marty
34
34
  expect(Marty::User.current).to be_nil
35
35
  end
36
36
 
37
- it "should prevent a non-registered user from logging in" do
37
+ it 'should prevent a non-registered user from logging in' do
38
38
  user = Marty::User.try_to_login('unknown_marty', 'invalid_password')
39
39
  expect(user).to be_nil
40
40
  expect(Marty::User.current).to be_nil
41
41
  end
42
42
 
43
- it "should prevent a non-registered user from logging in when the " +
44
- "database is in recovery mode" do
43
+ it 'should prevent a non-registered user from logging in when the ' +
44
+ 'database is in recovery mode' do
45
45
  allow(Marty::Util).to receive(:db_in_recovery?).and_return(true)
46
46
  user = Marty::User.try_to_login('unknown_marty', 'invalid_password')
47
47
  expect(user).to be_nil
@@ -8,25 +8,25 @@ require 'support/empty_job'
8
8
  describe Marty::DelayedJobController, slow: false do
9
9
  before(:each) { @routes = Marty::Engine.routes }
10
10
 
11
- describe "#trigger" do
11
+ describe '#trigger' do
12
12
  before do
13
13
  @job = ::Delayed::Job.enqueue EmptyJob.new
14
14
  end
15
15
 
16
- it "should be able to execute existing job" do
16
+ it 'should be able to execute existing job' do
17
17
  expect(::Delayed::Job.exists?(@job.id)).to be true
18
18
  post :trigger, params: { id: @job.id }
19
19
  expect(response).to have_http_status(:ok)
20
20
  expect(::Delayed::Job.exists?(@job.id)).to be false
21
21
  end
22
22
 
23
- it "should return ok if triggered job is locked" do
23
+ it 'should return ok if triggered job is locked' do
24
24
  @job.update!(locked_at: Time.zone.now)
25
25
  post :trigger, params: { id: @job.id }
26
26
  expect(response).to have_http_status(:ok)
27
27
  end
28
28
 
29
- it "should return ok if triggered job is missing" do
29
+ it 'should return ok if triggered job is missing' do
30
30
  @job.destroy!
31
31
  post :trigger, params: { id: @job.id }
32
32
  expect(response).to have_http_status(:ok)
@@ -16,28 +16,27 @@ module Marty::Diagnostic
16
16
 
17
17
  def git
18
18
  `cd #{Rails.root.to_s}; git describe --tags --always;`.
19
- strip rescue "Failed accessing git"
19
+ strip rescue 'Failed accessing git'
20
20
  end
21
21
 
22
22
  describe 'GET #op' do
23
23
  it 'returns http success' do
24
- get :op, params: {format: :json, op: 'version'}
24
+ get :op, params: { format: :json, op: 'version' }
25
25
  expect(response).to have_http_status(:success)
26
26
  end
27
27
 
28
28
  it 'a request injects the request object into Diagnostic classes' do
29
- get :op, params: {format: :json, op: 'version'}
29
+ get :op, params: { format: :json, op: 'version' }
30
30
  expect(Reporter.request).not_to eq(nil)
31
31
  end
32
32
 
33
33
  it 'returns the current version JSON' do
34
- get :op, params: {format: :json, op: 'version', data: 'true'}
34
+ get :op, params: { format: :json, op: 'version', data: 'true' }
35
35
 
36
36
  # generate version data and declare all values consistent
37
- versions = Version.generate.each_with_object({}){
38
- |(n, v),h|
39
- h[n] = v.each{|t, r| r['consistent'] = true}
40
- }
37
+ versions = Version.generate.each_with_object({}) do |(n, v), h|
38
+ h[n] = v.each { |t, r| r['consistent'] = true }
39
+ end
41
40
 
42
41
  expected = {
43
42
  'data' => {
@@ -50,77 +49,77 @@ module Marty::Diagnostic
50
49
 
51
50
  it 'returns the expected cummulative diagnostic' do
52
51
  expected = {
53
- "data" => {
54
- "Version" => {
52
+ 'data' => {
53
+ 'Version' => {
55
54
  my_ip => {
56
- "Marty" => {
57
- "description" => Marty::VERSION,
58
- "status" => true,
59
- "consistent" => true
55
+ 'Marty' => {
56
+ 'description' => Marty::VERSION,
57
+ 'status' => true,
58
+ 'consistent' => true
60
59
  },
61
- "Delorean" => {
62
- "description" => Delorean::VERSION,
63
- "status" => true,
64
- "consistent" => true
60
+ 'Delorean' => {
61
+ 'description' => Delorean::VERSION,
62
+ 'status' => true,
63
+ 'consistent' => true
65
64
  },
66
- "Mcfly" => {
67
- "description" => Mcfly::VERSION,
68
- "status" => true,
69
- "consistent" => true
65
+ 'Mcfly' => {
66
+ 'description' => Mcfly::VERSION,
67
+ 'status' => true,
68
+ 'consistent' => true
70
69
  },
71
- "Git" => {
72
- "description" => git,
73
- "status" => true,
74
- "consistent" => true
70
+ 'Git' => {
71
+ 'description' => git,
72
+ 'status' => true,
73
+ 'consistent' => true
75
74
  },
76
- "Rails" => {
77
- "description" => Rails.version,
78
- "status" => true,
79
- "consistent" => true
75
+ 'Rails' => {
76
+ 'description' => Rails.version,
77
+ 'status' => true,
78
+ 'consistent' => true
80
79
  },
81
- "Netzke Core" => {
82
- "description" => Netzke::Core::VERSION,
83
- "status" => true,
84
- "consistent" => true
80
+ 'Netzke Core' => {
81
+ 'description' => Netzke::Core::VERSION,
82
+ 'status' => true,
83
+ 'consistent' => true
85
84
  },
86
- "Netzke Basepack" => {
87
- "description" => Netzke::Basepack::VERSION,
88
- "status" => true,
89
- "consistent" => true
85
+ 'Netzke Basepack' => {
86
+ 'description' => Netzke::Basepack::VERSION,
87
+ 'status' => true,
88
+ 'consistent' => true
90
89
  },
91
- "Ruby" => {
92
- "description" => "#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL} "\
90
+ 'Ruby' => {
91
+ 'description' => "#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL} "\
93
92
  "(#{RUBY_PLATFORM})",
94
- "status" => true,
95
- "consistent" => true
93
+ 'status' => true,
94
+ 'consistent' => true
96
95
  },
97
- "RubyGems" => {
98
- "description" => Gem::VERSION,
99
- "status" => true,
100
- "consistent" => true
96
+ 'RubyGems' => {
97
+ 'description' => Gem::VERSION,
98
+ 'status' => true,
99
+ 'consistent' => true
101
100
  },
102
- "Database Schema Version" => {
103
- "description" => Database.db_schema,
104
- "status" => true,
105
- "consistent" => true
101
+ 'Database Schema Version' => {
102
+ 'description' => Database.db_schema,
103
+ 'status' => true,
104
+ 'consistent' => true
106
105
  },
107
- "Environment" => {
108
- "description" => Rails.env,
109
- "status" => true,
110
- "consistent" => true
106
+ 'Environment' => {
107
+ 'description' => Rails.env,
108
+ 'status' => true,
109
+ 'consistent' => true
111
110
  }
112
111
  }
113
112
  },
114
- "EnvironmentVariables" => {
113
+ 'EnvironmentVariables' => {
115
114
  my_ip => {
116
115
  }
117
116
  },
118
- "Nodes" => {
117
+ 'Nodes' => {
119
118
  my_ip => {
120
- "Nodes"=> {
121
- "description" => my_ip,
122
- "status" => true,
123
- "consistent" => true
119
+ 'Nodes' => {
120
+ 'description' => my_ip,
121
+ 'status' => true,
122
+ 'consistent' => true
124
123
  }
125
124
  }
126
125
  }