tuttle 0.0.6 → 0.0.8

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 (64) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +17 -0
  3. data/Rakefile +0 -1
  4. data/app/controllers/tuttle/active_job_controller.rb +1 -0
  5. data/app/controllers/tuttle/active_model_serializers_controller.rb +1 -0
  6. data/app/controllers/tuttle/active_support_controller.rb +1 -0
  7. data/app/controllers/tuttle/application_controller.rb +19 -2
  8. data/app/controllers/tuttle/cancancan_controller.rb +2 -0
  9. data/app/controllers/tuttle/devise_controller.rb +1 -0
  10. data/app/controllers/tuttle/execjs_controller.rb +12 -0
  11. data/app/controllers/tuttle/gems_controller.rb +3 -2
  12. data/app/controllers/tuttle/home_controller.rb +1 -0
  13. data/app/controllers/tuttle/i18n_controller.rb +27 -0
  14. data/app/controllers/tuttle/paperclip_controller.rb +1 -0
  15. data/app/controllers/tuttle/rack_attack_controller.rb +26 -0
  16. data/app/controllers/tuttle/rack_mini_profiler_controller.rb +1 -0
  17. data/app/controllers/tuttle/rails_controller.rb +19 -5
  18. data/app/controllers/tuttle/request_controller.rb +1 -0
  19. data/app/controllers/tuttle/ruby_controller.rb +15 -2
  20. data/app/helpers/tuttle/application_helper.rb +64 -2
  21. data/app/models/tuttle/configuration_registry.rb +1 -0
  22. data/app/models/tuttle/version_detector.rb +1 -0
  23. data/app/views/layouts/tuttle/application.html.erb +22 -6
  24. data/app/views/tuttle/active_support/dependencies.html.erb +7 -7
  25. data/app/views/tuttle/active_support/inflectors.html.erb +1 -1
  26. data/app/views/tuttle/cancancan/index.html.erb +1 -1
  27. data/app/views/tuttle/cancancan/rule_tester.html.erb +3 -3
  28. data/app/views/tuttle/execjs/index.html.erb +87 -0
  29. data/app/views/tuttle/gems/http_clients.html.erb +13 -12
  30. data/app/views/tuttle/gems/index.html.erb +4 -4
  31. data/app/views/tuttle/gems/json.html.erb +10 -10
  32. data/app/views/tuttle/home/index.html.erb +6 -6
  33. data/app/views/tuttle/i18n/_translation_entry.html.erb +10 -0
  34. data/app/views/tuttle/i18n/index.html.erb +111 -0
  35. data/app/views/tuttle/i18n/localize.html.erb +53 -0
  36. data/app/views/tuttle/i18n/translations.html.erb +12 -0
  37. data/app/views/tuttle/rack_attack/index.html.erb +227 -0
  38. data/app/views/tuttle/rails/assets.html.erb +4 -4
  39. data/app/views/tuttle/rails/cache.html.erb +4 -8
  40. data/app/views/tuttle/rails/controllers.html.erb +54 -7
  41. data/app/views/tuttle/rails/database.html.erb +14 -1
  42. data/app/views/tuttle/rails/engines.html.erb +1 -1
  43. data/app/views/tuttle/rails/helpers.html.erb +1 -1
  44. data/app/views/tuttle/rails/index.html.erb +72 -19
  45. data/app/views/tuttle/rails/models.html.erb +150 -73
  46. data/app/views/tuttle/rails/routes.html.erb +10 -8
  47. data/app/views/tuttle/rails/schema_cache.html.erb +2 -2
  48. data/app/views/tuttle/ruby/constants.html.erb +29 -0
  49. data/app/views/tuttle/ruby/extensions.html.erb +24 -0
  50. data/app/views/tuttle/ruby/index.html.erb +21 -15
  51. data/app/views/tuttle/ruby/tuning.html.erb +6 -9
  52. data/config/routes.rb +15 -1
  53. data/lib/tuttle.rb +1 -0
  54. data/lib/tuttle/engine.rb +3 -4
  55. data/lib/tuttle/instrumenter.rb +3 -1
  56. data/lib/tuttle/middleware/request_profiler.rb +11 -11
  57. data/lib/tuttle/presenters/action_dispatch/routing/route_wrapper.rb +34 -2
  58. data/lib/tuttle/presenters/active_record/reflection_presenter.rb +54 -0
  59. data/lib/tuttle/presenters/active_support/callbacks.rb +26 -0
  60. data/lib/tuttle/presenters/base_presenter.rb +19 -0
  61. data/lib/tuttle/presenters/rack_mini_profiler/client_settings.rb +1 -0
  62. data/lib/tuttle/ruby_prof/fast_call_stack_printer.rb +2 -1
  63. data/lib/tuttle/version.rb +2 -1
  64. metadata +27 -18
@@ -1,82 +1,159 @@
1
- <h2>Models (<%= @models.size %>)</h2>
1
+ <style>
2
+ .panel-body { overflow: auto; }
3
+ .autodetected { background: lightgoldenrodyellow; }
4
+ </style>
2
5
 
3
- <% if (0 == @models.size) %>
4
- No models were found in this application
5
- <% end %>
6
+ <h2>Models <span class="badge"><%= @models.size %></span></h2>
6
7
 
7
- <table class="table table-compact">
8
- <tr>
9
- <th>&nbsp;</th>
10
- <th>Name</th>
11
- <th>Type</th>
12
- <th>Default</th>
13
- <th>Null</th>
14
- <th>Limit</th>
15
- <th>SQL Type</th>
16
- <th>Precision</th>
17
- <th>Scale</th>
18
- </tr>
19
- <% @models.each do |model| %>
20
- <% next if model.abstract_class? || ! model.table_exists? %>
21
- <tr>
22
- <th colspan="9"><%= model.name %> (<%= model.table_name %>)</th>
23
- </tr>
24
- <% model.columns.each do |col| %>
25
- <tr>
26
- <td>&nbsp;</td>
27
- <td><%= col.name || Rails.configuration.filtered_parameters %></td>
28
- <td><%= col.type %></td>
29
- <td><%= col.default %></td>
30
- <td><%= 'false' unless col.null %></td>
31
- <td><%= col.limit %></td>
32
- <td><%= col.sql_type %></td>
33
- <td><%= col.precision %></td>
34
- <td><%= col.scale %></td>
35
- </tr>
36
- <% end %>
37
- <% end %>
38
- </table>
8
+ <% if 0 == @models.size %>
9
+ <p>No models were found in this application</p>
10
+ <% else %>
11
+ <% @models.each do |model| %>
12
+ <a name="model-<%= model.name %>"></a>
13
+ <div class="panel panel-default">
14
+ <div class="panel-heading">
15
+ <h3 class="panel-title"><%= model.name %></h3>
16
+ </div>
17
+ <div class="panel-body">
18
+ <h4>Associations <span class="badge"><%= model.reflect_on_all_associations.size %></span></h4>
19
+ <% if model.reflect_on_all_associations.size > 0 %>
20
+ <table class="table table-condensed">
21
+ <tr>
22
+ <th>Name</th>
23
+ <th>Macro</th>
24
+ <th>Type</th>
25
+ <th class="nowrap">Inverse Of</th>
26
+ <th>Scoped?</th>
27
+ <th>Polymorphic?</th>
28
+ <th>Validate?</th>
29
+ <th>Dependent</th>
30
+ <th class="nowrap">Class Name</th>
31
+ <th>Autosave</th>
32
+ <th>Required?</th>
33
+ <th>Foreign Key</th>
34
+ <th>Options</th>
35
+ </tr>
36
+ <% model.reflect_on_all_associations.each do |reflection| %>
37
+ <% reflection_presenter = ::Tuttle::Presenters::ActiveRecord::ReflectionPresenter.new(reflection, self) %>
38
+ <tr>
39
+ <td><%= reflection_presenter.name %></td>
40
+ <td><%= reflection_presenter.macro %></td>
41
+ <td><%= reflection_presenter.type %></td>
42
+ <td><%= reflection_presenter.inverse_of %></td>
43
+ <td><%= reflection_presenter.scoped? %></td>
44
+ <td><%= reflection_presenter.polymorphic? %></td>
45
+ <td><%= reflection_presenter.validate? %></td>
46
+ <td><%= reflection_presenter.options_dependent %></td>
47
+ <td><%= reflection_presenter.options_class_name %></td>
48
+ <td><%= reflection_presenter.options_autosave %></td>
49
+ <td><%= reflection_presenter.options_required %></td>
50
+ <td><%= reflection_presenter.foreign_key %></td>
51
+ <td><%= reflection_presenter.options_other %></td>
52
+ </tr>
53
+ <% end %>
54
+ </table>
55
+ <% end %>
39
56
 
40
- <% @models.each do |model| %>
41
- <div class="panel panel-default">
42
- <div class="panel-heading">
43
- <h3 class="panel-title"><%= model.name %></h3>
44
- </div>
45
- <div class="panel-body">
46
- Stored attributes = <%= model.stored_attributes %><br/>
47
- Save callbacks = <%= model.send('_save_callbacks').count %><br/>
48
- Associations = <%= model.reflect_on_all_associations.count %><br/>
49
- Reflections = <%= model.reflections.keys.sort!.to_s %><br/>
50
- Validators:<br/>
51
- <table class="table table-compact">
52
- <tr>
53
- <th>Kind</th>
54
- <th>Attributes</th>
55
- <th>Options</th>
56
- </tr>
57
- <% model.validators.each do |validator| %>
58
- <tr>
59
- <td><%= validator.kind %></td>
60
- <td><%= validator.attributes if validator.respond_to?(:attributes) %></td>
61
- <td><%= validator.options %></td>
62
- </tr>
63
- <% end %>
64
- </table>
57
+ <h4>Columns <span class="badge"><%= model.columns.size %></span></h4>
58
+ <table class="table table-condensed">
59
+ <tr>
60
+ <th>Name</th>
61
+ <th>Type</th>
62
+ <th>Default</th>
63
+ <th>Null</th>
64
+ <th>Limit</th>
65
+ <th>SQL Type</th>
66
+ <th>Precision</th>
67
+ <th>Scale</th>
68
+ </tr>
69
+ <% model.columns.each do |col| %>
70
+ <tr>
71
+ <td><%= col.name || Rails.configuration.filtered_parameters %></td>
72
+ <td><%= col.type %></td>
73
+ <td><%= col.default %></td>
74
+ <td><%= 'false' unless col.null %></td>
75
+ <td><%= col.limit %></td>
76
+ <td><%= col.sql_type %></td>
77
+ <td><%= col.precision %></td>
78
+ <td><%= col.scale %></td>
79
+ </tr>
80
+ <% end %>
81
+ </table>
65
82
 
66
- <% next if model.abstract_class? || ! model.table_exists? %>
67
- <% if model.respond_to?(:find_by_statement_cache) %>
68
- FindBy Statement Cache:<br/>
69
- <%= model.find_by_statement_cache.map {|k,v| "#{k}=>#{v.query_builder.instance_variable_get(:@sql)}"}.join('<br/>') %>
70
- <% end %>
71
- </div>
72
- </div>
83
+ <h4>Validators: <span class="badge"><%= model.validators.size %></span></h4>
84
+ <% if model.validators.size > 0 %>
85
+ <table class="table table-condensed">
86
+ <tr>
87
+ <th>Kind</th>
88
+ <th>Attributes</th>
89
+ <th>Options</th>
90
+ </tr>
91
+ <% model.validators.each do |validator| %>
92
+ <tr>
93
+ <td><%= validator.kind %></td>
94
+ <td><%= validator.attributes if validator.respond_to?(:attributes) %></td>
95
+ <td><%= validator.options %></td>
96
+ </tr>
97
+ <% end %>
98
+ </table>
99
+ <% end %>
73
100
 
74
- <% end %>
101
+ <h4>Stored attributes <span class="badge"><%= model.stored_attributes.size %></span></h4>
102
+ <% if model.stored_attributes.size > 0 %>
103
+ <table class="table table-condensed">
104
+ <tr>
105
+ <th class="nowrap">Store Name</th>
106
+ <th>Attributes</th>
107
+ </tr>
108
+ <% model.stored_attributes.each do |store, attributes| %>
109
+ <tr>
110
+ <td class="nowrap"><%= store.inspect %></td>
111
+ <td><%= attributes.inspect %></td>
112
+ </tr>
113
+ <% end %>
114
+ </table>
115
+ <% end %>
116
+
117
+ <h4>Callbacks Counts</h4>
118
+ <table class="table table-condensed not-wide">
119
+ <tr>
120
+ <th class="nowrap">Callback</th>
121
+ <th>Before</th>
122
+ <th>After</th>
123
+ <th>Around</th>
124
+ </tr>
125
+ <% [:save, :create, :validate, :commit, :touch, :rollback, :find, :initialize].each do |callback_type| %>
126
+ <% callbacks = model.send(:get_callbacks, callback_type) %>
127
+ <tr>
128
+ <td class="nowrap"><%= callback_type.inspect %></td>
129
+ <td><%= callbacks.select{ |cb| cb.kind.eql?(:before) }.size %></td>
130
+ <td><%= callbacks.select{ |cb| cb.kind.eql?(:after) }.size %></td>
131
+ <td><%= callbacks.select{ |cb| cb.kind.eql?(:around) }.size %></td>
132
+ </tr>
133
+ <% end %>
134
+ </table>
75
135
 
136
+ <% if model.respond_to?(:find_by_statement_cache) %>
137
+ <h4>FindBy Statement Cache <span class="badge"><%= model.find_by_statement_cache.size %></span></h4>
138
+ <% if model.find_by_statement_cache.size > 0 %>
139
+ <table class="table table-condensed">
140
+ <tr>
141
+ <th>Keys</th>
142
+ <th>SQL</th>
143
+ </tr>
144
+ <% model.find_by_statement_cache.each do |keys, statement_cache| %>
145
+ <tr>
146
+ <td><%= keys.inspect %></td>
147
+ <td><%= statement_cache.query_builder.instance_variable_get(:@sql) rescue '--Error--' %></td>
148
+ </tr>
149
+ <% end %>
150
+ </table>
151
+ <% end %>
152
+ <% end %>
76
153
 
77
- <pre>
78
- <% @models.each do |model| %>
79
- <%= model.inspect.to_s %>
154
+ </div>
155
+ </div>
156
+
157
+ <% end %>
80
158
 
81
159
  <% end %>
82
- </pre>
@@ -1,5 +1,5 @@
1
1
  <%- content_for(:javascripts) do -%>
2
- <%= javascript_tag do -%>
2
+ <%= javascript_tag do %>
3
3
  $(function () { $('[data-toggle="tooltip"]').tooltip(); });
4
4
  <% end -%>
5
5
  <%- end %>
@@ -28,28 +28,30 @@
28
28
  <table class="table table-striped table-condensed">
29
29
  <tr>
30
30
  <th><span data-toggle="tooltip" title="Route paths are checked in the order they are defined.">Precedence</span></th>
31
- <th><span data-toggle="tooltip" title="The route name is used to generate Named Helpers like myaction_path">Name</span></th>
32
31
  <th><span data-toggle="tooltip" title="The HTTP method for this route">Verb</span></th>
33
32
  <th><span data-toggle="tooltip" title="The URI for the route.">Path</span></th>
33
+ <th><span data-toggle="tooltip" title="The route name is used to generate Named Helpers like myaction_path">Name</span></th>
34
34
  <th><span data-toggle="tooltip" title="Most routes will map to a Controller#Action but some will be handled by engines or Rails internals">Endpoint or App</span></th>
35
35
  <th><span data-toggle="tooltip" title="Routes can be constrained to match parameters">Constraints</span></th>
36
36
  <th><span data-toggle="tooltip" title="The Controller for the route">Controller</span></th>
37
37
  <th><span data-toggle="tooltip" title="The Action for the route">Action</span></th>
38
38
  <th><span data-toggle="tooltip" title="Internal routes are handle by Rails under the covers">Internal?</span></th>
39
- <th><span data-toggle="tooltip" title="Some routes are handled my mounted engines">Engine?</span></th>
39
+ <th><span data-toggle="tooltip" title="Some routes are handled by mounted engines">Engine?</span></th>
40
+ <th><span data-toggle="tooltip" title="Does the controller and action exist for the route?">Route valid?</span></th>
40
41
  </tr>
41
42
  <% @routes.each do |route| %>
42
43
  <tr>
43
- <td><%= route.precedence %></td>
44
- <td><%= route.name %></td>
44
+ <td><a name="route_<%= route.precedence %>"><%= route.precedence %></a></td>
45
45
  <td><%= route.verb %></td>
46
46
  <td><%= route.path %></td>
47
+ <td><%= route.name %></td>
47
48
  <td><%= route.endpoint_or_app_name %></td>
48
49
  <td><%= route.constraints %></td>
49
50
  <td><%= route.controller %></td>
50
51
  <td><%= route.action %></td>
51
- <td><%= route.internal_to_rails? %></td>
52
- <td><%= route.engine? %></td>
52
+ <td><%= truth_label(route.internal?) %></td>
53
+ <td><%= truth_label(route.engine?) %></td>
54
+ <td><%= truth_label(route.route_problem.nil?) %> <%= route.route_problem %></td>
53
55
  </tr>
54
56
  <% end %>
55
57
  </table>
@@ -70,7 +72,7 @@
70
72
  </div>
71
73
  </div>
72
74
  <hr>
73
- <% if !@recognized_paths.blank? %>
75
+ <% unless @recognized_paths.blank? %>
74
76
  <div class="form-group">
75
77
  <div class="col-sm-offset-2 col-sm-10">
76
78
  <table class="table table-striped">
@@ -38,7 +38,7 @@
38
38
  <%= truth_label(@connection_schema_cache.version.present?,'DOES','DOES NOT') %>
39
39
  appear to have been loaded from the schema cache dump.
40
40
  </p>
41
- <% if !Rails.application.config.cache_classes %>
41
+ <% unless Rails.application.config.cache_classes %>
42
42
  <p>Note: The schema cache is only loaded once on application startup. During development, with code reloading, it is likely to be reset.</p>
43
43
  <% end %>
44
44
 
@@ -75,7 +75,7 @@
75
75
  <tr>
76
76
  <td colspan="7" class="warning text-center">
77
77
  No data exists in the schema cache
78
- </br>
78
+ <br />
79
79
  This most likely means that the connection has been reset either by
80
80
  code reloading or some connection problem
81
81
  </td>
@@ -0,0 +1,29 @@
1
+ <h2>Constants</h2>
2
+
3
+ <h3>Global constants <span class="badge"><%= @constants.size %></span></h3>
4
+ <p>
5
+ Global constants are variables that are defined outside of a module and start with a capital letter.
6
+ In most cases, constants should be frozen to prevent them from being modified.
7
+ </p>
8
+ <p>
9
+ Classes and modules are also constants. This table shows the non-class/module constants.
10
+ </p>
11
+
12
+ <table class="table table-striped table-condensed">
13
+ <thead>
14
+ <tr>
15
+ <th>Constant</th>
16
+ <th>Frozen?</th>
17
+ <th>Class</th>
18
+ </tr>
19
+ </thead>
20
+ <tbody>
21
+ <% @constants.each do |name, klass, value| %>
22
+ <tr>
23
+ <td><code><%= name.inspect %></code></td>
24
+ <td><%= truth_label(value.frozen?) %></td>
25
+ <td><code><%= klass %></code></td>
26
+ </tr>
27
+ <% end %>
28
+ </tbody>
29
+ </table>
@@ -0,0 +1,24 @@
1
+ <h2>Extensions</h2>
2
+
3
+ <h3>Object Extensions <span class="badge"><%= @obj_extensions.size %></span></h3>
4
+ <p>
5
+ Ruby's <code>Object</code> class can be extended by your own code or libraries you include.
6
+ Here are all the methods on Object and where they were defined.
7
+ </p>
8
+
9
+ <table class="table table-striped table-condensed">
10
+ <thead>
11
+ <tr>
12
+ <th>Method</th>
13
+ <th>Source Location</th>
14
+ </tr>
15
+ </thead>
16
+ <tbody>
17
+ <% @obj_extensions.each do |meth, file, lineno| %>
18
+ <tr>
19
+ <td><code><%= meth.inspect %></code></td>
20
+ <td><code><%= display_source_locaction(file, lineno) %></code></td>
21
+ </tr>
22
+ <% end %>
23
+ </tbody>
24
+ </table>
@@ -2,9 +2,9 @@
2
2
 
3
3
  <ul class="nav nav-tabs" role="tablist">
4
4
  <li class="active"><a href="#ruby" role="tab" data-toggle="tab">Ruby</a></li>
5
- <li><a href="#environment" role="tab" data-toggle="tab">Environment (<%= ENV.size %>)</a></li>
6
- <li><a href="#load_path" role="tab" data-toggle="tab">Load Path (<%= $LOAD_PATH.size %>)</a></li>
7
- <li><a href="#loaded_features" role="tab" data-toggle="tab">Loaded Features (<%= $LOADED_FEATURES.size %>)</a></li>
5
+ <li><a href="#environment" role="tab" data-toggle="tab">Environment <span class="badge"><%= ENV.size %></span></a></li>
6
+ <li><a href="#load_path" role="tab" data-toggle="tab">Load Path <span class="badge"><%= $LOAD_PATH.size %></span></a></li>
7
+ <li><a href="#loaded_features" role="tab" data-toggle="tab">Loaded Features <span class="badge"><%= $LOADED_FEATURES.size %></span></a></li>
8
8
  <li><a href="#rbconfig" role="tab" data-toggle="tab">Ruby Config</a></li>
9
9
  <li><a href="#bundler" role="tab" data-toggle="tab">Bundler</a></li>
10
10
  </ul>
@@ -75,8 +75,7 @@
75
75
 
76
76
  <div class="tab-pane" id="environment">
77
77
  <p>
78
- The <code>ENV</code> (<%= ENV.size %> entries) includes
79
- the environment variables.
78
+ The <code>ENV</code> includes the environment variables.
80
79
  </p>
81
80
  <pre>
82
81
  <% @filtered_env.each do |key, val| -%>
@@ -89,25 +88,32 @@
89
88
 
90
89
  <h2>Configuration</h2>
91
90
  <dl>
92
-
93
91
  <dt>Version</dt><dd><%= ::Bundler::VERSION %></dd>
94
92
  <dt>Local config file</dt><dd><%= Bundler.settings.send(:local_config_file) %></dd>
95
93
  <dt>Global config file</dt><dd><%= Bundler.settings.send(:global_config_file) %></dd>
96
- <dt>Require sudo?</dt><dd><%= Bundler.requires_sudo? %></dd>
97
- <dt>Allow sudo?</dt><dd><%= Bundler.settings.allow_sudo? %></dd>
94
+ <dt>Require sudo?</dt><dd><%= truth_label(Bundler.requires_sudo?) %></dd>
95
+ <dt>Allow sudo?</dt><dd><%= truth_label(Bundler.settings.allow_sudo?) %></dd>
98
96
  </dl>
99
97
  <h2>Settings</h2>
100
- <dl>
101
- <% Bundler.settings.all.each do |key| %>
102
- <dt><%= key %></dt>
103
- <dd><%= Bundler.settings.pretty_values_for(key)[0] %></dd>
98
+ <table class="table table-condensed">
99
+ <tr>
100
+ <th>Setting</th>
101
+ <th>Value</th>
102
+ <th>Configured by</th>
103
+ </tr>
104
+ <% Bundler.settings.all.reject {|key| key.start_with?('#')}.each do |key| %>
105
+ <tr>
106
+ <td><%= key %></td>
107
+ <td><code><%= Bundler.settings[key].inspect %></code></td>
108
+ <td><%= Bundler.settings.pretty_values_for(key)[0] %></td>
109
+ </tr>
104
110
  <% end %>
105
- </dl>
111
+ </table>
106
112
  </div>
107
113
 
108
114
  <div class="tab-pane" id="load_path">
109
115
  <p>
110
- The <code>$LOAD_PATH</code> (<%= $LOAD_PATH.size %> entries) lists
116
+ The <code>$LOAD_PATH</code> lists
111
117
  the directories that will be searched when code is loaded with
112
118
  <code>require</code> or <code>load</code>.
113
119
  </p>
@@ -119,7 +125,7 @@
119
125
  </div>
120
126
 
121
127
  <div class="tab-pane" id="loaded_features">
122
- <p>The following <b><%= $LOADED_FEATURES.size %></b> files have been loaded via <code>require</code> at some point.</p>
128
+ <p>The following files have been loaded via <code>require</code> at some point.</p>
123
129
  <ul>
124
130
  <%- $LOADED_FEATURES.each do |filename| %>
125
131
  <li><%= filename %></li>
@@ -47,7 +47,7 @@ ENV['RUBY_GLOBAL_METHOD_CACHE_SIZE'] = <%= ENV.fetch('RUBY_GLOBAL_METHOD_CACHE_S
47
47
  </p>
48
48
  <h4>Controls</h4>
49
49
  <p>
50
- Normally, the Garbage Collector runs as needed to free memory. You can also programmatically control the GC as well to stop it from running or to trigger a GC on demand.</code>
50
+ Normally, the Garbage Collector runs as needed to free memory. You can also programmatically control the GC as well to stop it from running or to trigger a GC on demand.
51
51
  </p>
52
52
  <p>
53
53
  Is GC enabled? <%= truth_label(@gc_enabled) %>
@@ -91,15 +91,12 @@ ENV['RUBY_GLOBAL_METHOD_CACHE_SIZE'] = <%= ENV.fetch('RUBY_GLOBAL_METHOD_CACHE_S
91
91
  </p>
92
92
  <p>
93
93
  Some useful resources for understanding how these variables affect performance can be found here:
94
- <ul>
95
- <li><a href="https://github.com/tmm1">Aman Gupta's</a> post: <a href="http://tmm1.net/ruby21-rgengc/">Ruby 2.1: RGenGC</a></li>
96
- <li><a href="https://github.com/mrnugget">Thorsten Ball's</a> post: <a href="http://thorstenball.com/blog/2014/03/12/watching-understanding-ruby-2.1-garbage-collector/">Watching and Understanding the Ruby 2.1 Garbage Collector at Work</a></li>
97
- </ul>
98
94
  </p>
99
- <%
100
- #
101
- #
102
- %>
95
+ <ul>
96
+ <li><a href="https://github.com/tmm1">Aman Gupta's</a> post: <a href="http://tmm1.net/ruby21-rgengc/">Ruby 2.1: RGenGC</a></li>
97
+ <li><a href="https://github.com/mrnugget">Thorsten Ball's</a> post: <a href="http://thorstenball.com/blog/2014/03/12/watching-understanding-ruby-2.1-garbage-collector/">Watching and Understanding the Ruby 2.1 Garbage Collector at Work</a></li>
98
+ </ul>
99
+
103
100
  <table class="table table-condensed">
104
101
  <tr>
105
102
  <th>ENV</th>