marty 2.5.2 → 2.5.4

Sign up to get free protection for your applications and to get access to all the features.
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
  }