tuttle 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -2
  3. data/README.md +1 -1
  4. data/app/assets/images/tuttle/favicon.ico +0 -0
  5. data/app/controllers/tuttle/application_controller.rb +2 -5
  6. data/app/controllers/tuttle/cancancan_controller.rb +5 -2
  7. data/app/controllers/tuttle/gems_controller.rb +19 -0
  8. data/app/controllers/tuttle/rails_controller.rb +6 -0
  9. data/app/controllers/tuttle/ruby_controller.rb +23 -0
  10. data/app/helpers/tuttle/application_helper.rb +5 -0
  11. data/app/views/layouts/tuttle/application.html.erb +24 -7
  12. data/app/views/tuttle/cancancan/_rule_table.html.erb +1 -1
  13. data/app/views/tuttle/cancancan/index.html.erb +1 -1
  14. data/app/views/tuttle/cancancan/rule_tester.html.erb +2 -2
  15. data/app/views/tuttle/gems/http_clients.html.erb +35 -0
  16. data/app/views/tuttle/gems/json.html.erb +31 -0
  17. data/app/views/tuttle/gems/other.html.erb +16 -0
  18. data/app/views/tuttle/rails/cache.html.erb +27 -1
  19. data/app/views/tuttle/rails/database.html.erb +21 -0
  20. data/app/views/tuttle/rails/index.html.erb +16 -6
  21. data/app/views/tuttle/rails/instrumentation.html.erb +1 -1
  22. data/app/views/tuttle/rails/models.html.erb +1 -1
  23. data/app/views/tuttle/ruby/miscellaneous.html.erb +12 -0
  24. data/app/views/tuttle/ruby/tuning.html.erb +117 -0
  25. data/config/routes.rb +8 -1
  26. data/lib/tuttle.rb +1 -1
  27. data/lib/tuttle/engine.rb +48 -7
  28. data/lib/tuttle/version.rb +1 -1
  29. metadata +12 -108
  30. data/app/assets/stylesheets/scaffold.css +0 -56
  31. data/test/controllers/tuttle/cancancan_controller_test.rb +0 -60
  32. data/test/controllers/tuttle/devise_controller_test.rb +0 -12
  33. data/test/controllers/tuttle/home_controller_test.rb +0 -13
  34. data/test/controllers/tuttle/rails_controller_test.rb +0 -71
  35. data/test/controllers/tuttle/ruby_controller_test.rb +0 -12
  36. data/test/dummy/Gemfile.lock +0 -142
  37. data/test/dummy/README.rdoc +0 -261
  38. data/test/dummy/Rakefile +0 -7
  39. data/test/dummy/app/assets/javascripts/application.js +0 -15
  40. data/test/dummy/app/assets/stylesheets/application.css +0 -13
  41. data/test/dummy/app/controllers/application_controller.rb +0 -3
  42. data/test/dummy/app/helpers/application_helper.rb +0 -2
  43. data/test/dummy/app/models/ability.rb +0 -7
  44. data/test/dummy/app/models/user.rb +0 -6
  45. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  46. data/test/dummy/config.ru +0 -4
  47. data/test/dummy/config/application.rb +0 -52
  48. data/test/dummy/config/boot.rb +0 -11
  49. data/test/dummy/config/database.yml +0 -25
  50. data/test/dummy/config/environment.rb +0 -5
  51. data/test/dummy/config/environments/development.rb +0 -30
  52. data/test/dummy/config/environments/test.rb +0 -38
  53. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  54. data/test/dummy/config/initializers/devise.rb +0 -257
  55. data/test/dummy/config/initializers/inflections.rb +0 -15
  56. data/test/dummy/config/initializers/mime_types.rb +0 -5
  57. data/test/dummy/config/initializers/secret_token.rb +0 -7
  58. data/test/dummy/config/initializers/session_store.rb +0 -8
  59. data/test/dummy/config/initializers/tuttle.rb +0 -3
  60. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  61. data/test/dummy/config/locales/en.yml +0 -5
  62. data/test/dummy/config/routes.rb +0 -5
  63. data/test/dummy/db/migrate/20141229204528_devise_create_users.rb +0 -42
  64. data/test/dummy/db/schema.rb +0 -34
  65. data/test/dummy/public/404.html +0 -26
  66. data/test/dummy/public/422.html +0 -26
  67. data/test/dummy/public/500.html +0 -25
  68. data/test/dummy/public/favicon.ico +0 -0
  69. data/test/dummy/script/rails +0 -6
  70. data/test/dummy/test/fixtures/users.yml +0 -6
  71. data/test/dummy/test/models/user_test.rb +0 -7
  72. data/test/dummy/tmp/cache/assets/test/sprockets/00091e0cb6df543a8e704290f4dec8db +0 -0
  73. data/test/dummy/tmp/cache/assets/test/sprockets/11599cd5b5d6a0a58a5e98c0902e1997 +0 -0
  74. data/test/dummy/tmp/cache/assets/test/sprockets/9b2e26c1e54d4ff5ae04270e8f03907f +0 -0
  75. data/test/dummy/tmp/cache/assets/test/sprockets/a65793481a75afa9f660d1032ee66ef5 +0 -0
  76. data/test/dummy/tmp/cache/assets/test/sprockets/d9450766086a9f3f994e8c4a2273bfaa +0 -0
  77. data/test/dummy/tmp/cache/assets/test/sprockets/e117b0425a7b9daef8a213c1a2203f00 +0 -0
  78. data/test/integration/navigation_test.rb +0 -9
  79. data/test/test_helper.rb +0 -37
  80. data/test/tuttle_test.rb +0 -7
  81. data/test/unit/tuttle/note_test.rb +0 -9
@@ -17,7 +17,7 @@ No models were found in this application
17
17
  <th>Scale</th>
18
18
  </tr>
19
19
  <% @models.each do |model| %>
20
- <% next if model.abstract_class? %>
20
+ <% next if model.abstract_class? || ! model.table_exists? %>
21
21
  <tr>
22
22
  <th colspan="9"><%= model.name %> (<%= model.table_name %>)</th>
23
23
  </tr>
@@ -0,0 +1,12 @@
1
+ <h2>Miscellaneous</h2>
2
+
3
+ <h3>Reslov-Replace</h3>
4
+ <p>
5
+ By default, Ruby network libraries use the system DNS lookup.
6
+ But the Ruby standard library also ships with a pure-Ruby implementation that causes the VM to not
7
+ lock while waiting for DNS lookups to happen. To enable this lookup just add <code>require 'resolv-replace'</code>
8
+ somewhere in your application, such as in an initializer.
9
+ </p>
10
+ <p>
11
+ Does <code>resolv-replace</code> appear to be patched in? <%= truth_label(IPSocket.method(:getaddress).source_location.present?) %>
12
+ </p>
@@ -0,0 +1,117 @@
1
+ <h2>Ruby Tuning</h2>
2
+
3
+ <p>
4
+ Ruby can be tuned for different types of applications through the use of environment variables.
5
+ </p>
6
+ <p>
7
+ Different versions of Ruby support different variables so it is important to make sure that you are using
8
+ settings and environment variable names appropriate for your version of Ruby.
9
+ </p>
10
+
11
+ <h3>Global Method Cache</h3>
12
+ <p>
13
+ Since Ruby 2.2, the method cache size is configurable using the <code>RUBY_GLOBAL_METHOD_CACHE_SIZE</code> environment variable.
14
+ </p>
15
+ <p>
16
+ The default value for this setting is 2048 entries which may be low for even a moderate-sized Rails application.
17
+ </p>
18
+ <%- # TODO: warn if value is not a power of 2 %>
19
+ <pre>
20
+ ENV['RUBY_GLOBAL_METHOD_CACHE_SIZE'] = <%= ENV.fetch('RUBY_GLOBAL_METHOD_CACHE_SIZE') { 'not configured'} %>
21
+ </pre>
22
+ <p>
23
+ For more information and a great story about how <a href="https://github.com/csfrancis">Scott Francis</a>
24
+ added this variable to Ruby
25
+ see <a href="http://www.shopify.com/technology/16777156-tuning-rubys-global-method-cache">his writeup</a>
26
+ on performance tuning the Shopify app.
27
+ </p>
28
+
29
+ <% if RUBY_VERSION.to_f >= 2.1 %>
30
+ <h3>Garbage Collection Internals</h3>
31
+ <p>
32
+ Some of Ruby's Garbage Collection parameters are determined during by the runtime platform or compile-time configuration.
33
+ These values can't be changed by environment variables but are helpful for understanding how memory is being allocated and used.
34
+ </p>
35
+ <ul>
36
+ <% GC::INTERNAL_CONSTANTS.each do |key, value| %>
37
+ <li><%= key %> = <%= value %></li>
38
+ <% end %>
39
+ </ul>
40
+ <% end %>
41
+
42
+ <h3>Garbage Collection</h3>
43
+ <p>
44
+ Ruby's garbage collection is highly-tunable through environment variables.
45
+ Determining the right configuration requires understanding how the GC is working
46
+ and how much memory is being allocated by requests to the application.
47
+ </p>
48
+ <h4>Controls</h4>
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>
51
+ </p>
52
+ <p>
53
+ Is GC enabled? <%= truth_label(@gc_enabled) %>
54
+ <br/>
55
+ Is GC::Profiler enabled? <%= truth_label(GC::Profiler.enabled?) %>
56
+ </p>
57
+
58
+ <h4>Garbage Collection Statistics</h4>
59
+ <table class='table table-condensed' style='width:auto;'>
60
+ <%- gcstat = GC.stat %>
61
+ <%- [:count, :major_gc_count, :minor_gc_count,
62
+ :heap_available_slots, :heap_live_slots, :heap_free_slots, :heap_final_slots, :heap_marked_slots, :heap_swept_slots,
63
+ :heap_sorted_length,
64
+ :total_allocated_pages, :total_freed_pages, :heap_allocatable_pages, :heap_allocated_pages, :heap_eden_pages, :heap_tomb_pages,
65
+ :total_allocated_objects, :total_freed_objects,
66
+ :old_objects, :old_objects_limit,
67
+ :remembered_wb_unprotected_objects, :remembered_wb_unprotected_objects_limit,
68
+ :malloc_increase_bytes, :malloc_increase_bytes_limit,
69
+ :oldmalloc_increase_bytes, :oldmalloc_increase_bytes_limit].each do |key| %>
70
+ <tr>
71
+ <th class="text-right"><%= key %></th>
72
+ <td><%= gcstat[key] %></td>
73
+ </tr>
74
+ <%- end %>
75
+ </table>
76
+
77
+ <% if RUBY_VERSION.to_f >= 2.1 %>
78
+ <h4>Latest GC info</h4>
79
+ <%- dgtest = GC.latest_gc_info %>
80
+ <dl class="dl-horizontal">
81
+ <%- dgtest.each do |key,val| %>
82
+ <dt><%= key %></dt>
83
+ <dd><%= val %></dd>
84
+ <%- end %>
85
+ </dl>
86
+ <% end %>
87
+
88
+ <h4>Configuration settings</h4>
89
+ <p>
90
+ The following environment variables are available to be configured to tune the Garbage Collector in Ruby 2.2.
91
+ </p>
92
+ <p>
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
+ </p>
99
+ <%
100
+ #
101
+ #
102
+ %>
103
+ <table class="table table-condensed">
104
+ <tr>
105
+ <th>ENV</th>
106
+ <th>Value</th>
107
+ <th>Description</th>
108
+ </tr>
109
+ <%- @gc_params.each do |key, desc| %>
110
+ <tr>
111
+ <td><%= key %></td>
112
+ <td style="white-space: nowrap;"><%= ENV.fetch(key.to_s) { 'not configured'} %></td>
113
+ <td><%= desc %></td>
114
+ </tr>
115
+ <%- end %>
116
+ </table>
117
+
@@ -7,7 +7,14 @@ Tuttle::Engine.routes.draw do
7
7
  get :controllers, :models, :database, :helpers, :assets, :routes, :instrumentation, :inflectors, :cache
8
8
  end
9
9
 
10
- get '/ruby' => 'ruby#index'
10
+ namespace :ruby do
11
+ get '', :action => :index
12
+ get :tuning, :miscellaneous
13
+ end
14
+
15
+ namespace :gems do
16
+ get :http_clients, :json, :other
17
+ end
11
18
 
12
19
  if defined?(Devise)
13
20
  get '/devise' => 'devise#index'
@@ -3,7 +3,7 @@ require 'tuttle/engine'
3
3
  module Tuttle
4
4
 
5
5
  mattr_accessor :automount_engine
6
- @@automount_engine = true
6
+ mattr_accessor :enabled
7
7
 
8
8
  def self.setup
9
9
  yield self
@@ -1,28 +1,50 @@
1
1
  module Tuttle
2
2
  class Engine < ::Rails::Engine
3
3
  isolate_namespace Tuttle
4
+ engine_name :tuttle
5
+
6
+ config.tuttle = ActiveSupport::OrderedOptions.new
4
7
 
5
8
  attr_accessor :reload_needed
6
- attr_accessor :events, :event_counts
9
+ attr_accessor :events, :event_counts, :cache_events
7
10
  attr_accessor :session_start, :session_id
8
11
 
12
+ attr_reader :logger
13
+
14
+ initializer :tuttle_assets_precompile do |app|
15
+ app.config.assets.precompile += %w(tuttle/application.css tuttle/application.js tuttle/favicon.ico)
16
+ end
17
+
18
+ initializer :tuttle_set_configuration do |app|
19
+ app.config.tuttle.each do |k,v|
20
+ Tuttle.send("#{k}=", v)
21
+ end
22
+ # Tuttle will be automatically enabled in development if not configured explicitly
23
+ Tuttle.enabled= Rails.env.development? if Tuttle.enabled==nil
24
+ Tuttle.automount_engine= true if Tuttle.automount_engine==nil
25
+ end
26
+
9
27
  initializer :tuttle_startup do
28
+ next unless Tuttle.enabled
29
+
10
30
  Tuttle::Engine.session_start = Time.now
11
31
  Tuttle::Engine.session_id = SecureRandom.uuid
12
- end
13
-
14
- initializer :tuttle_assets_precompile do |app|
15
- app.config.assets.precompile += %w(tuttle/application.css tuttle/application.js )
32
+ @logger = ::Logger.new("#{Rails.root}/log/tuttle.log")
33
+ @logger.info('Tuttle engine started')
16
34
  end
17
35
 
18
36
  initializer :tuttle_track_reloads, group: :all do
37
+ next unless Tuttle.enabled
38
+
19
39
  ActionDispatch::Reloader.to_prepare do
20
- Rails.logger.warn('Tuttle: ActionDispatch::Reloader called to_prepare')
40
+ Tuttle::Engine.logger.warn('ActionDispatch::Reloader called to_prepare') unless Tuttle::Engine.reload_needed.nil?
21
41
  Tuttle::Engine.reload_needed = true
22
42
  end
23
43
  end
24
44
 
25
45
  initializer :tuttle_global_instrumenter, group: :all do
46
+ next unless Tuttle.enabled
47
+
26
48
  Tuttle::Engine.events = []
27
49
  Tuttle::Engine.event_counts = Hash.new(0)
28
50
 
@@ -35,11 +57,30 @@ module Tuttle
35
57
  end
36
58
  end
37
59
 
60
+ Tuttle::Engine.cache_events = []
61
+ # Note: For Rails < 4.2 instrumentation is not enabled by default. Hitting the cache inspector page will enable it for that session.
62
+ Tuttle::Engine.logger.info('Initializing cache_read subscriber')
63
+ ActiveSupport::Notifications.subscribe('cache_read.active_support') do |*args|
64
+ cache_call_location = caller_locations.detect { |cl| cl.path.start_with?("#{Rails.root}/app".freeze) }
65
+ event = ActiveSupport::Notifications::Event.new(*args)
66
+
67
+ Tuttle::Engine.logger.info("Cache Read called: #{cache_call_location.path} on line #{cache_call_location.lineno} :: #{event.payload.inspect}")
68
+
69
+ event.payload.merge!({:call_location_path => cache_call_location.path, :call_location_lineno => cache_call_location.lineno })
70
+ Tuttle::Engine.cache_events << event
71
+ end
72
+ ActiveSupport::Notifications.subscribe('cache_generate.active_support') do |*args|
73
+ Tuttle::Engine.logger.info('Cache Generate called')
74
+ end
75
+
38
76
  end
39
77
 
40
78
  initializer :tuttle_automounter do
79
+ next unless Tuttle.enabled
80
+
41
81
  if Tuttle.automount_engine
42
- Rails.application.routes.append do
82
+ Rails.application.routes.prepend do
83
+ Tuttle::Engine.logger.info('Auto-mounting /tuttle routes')
43
84
  mount Tuttle::Engine, at: "tuttle"
44
85
  end
45
86
  end
@@ -1,3 +1,3 @@
1
1
  module Tuttle
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tuttle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dave Gynn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-14 00:00:00.000000000 Z
11
+ date: 2015-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -69,12 +69,13 @@ files:
69
69
  - MIT-LICENSE
70
70
  - README.md
71
71
  - Rakefile
72
+ - app/assets/images/tuttle/favicon.ico
72
73
  - app/assets/javascripts/tuttle/application.js
73
- - app/assets/stylesheets/scaffold.css
74
74
  - app/assets/stylesheets/tuttle/application.css
75
75
  - app/controllers/tuttle/application_controller.rb
76
76
  - app/controllers/tuttle/cancancan_controller.rb
77
77
  - app/controllers/tuttle/devise_controller.rb
78
+ - app/controllers/tuttle/gems_controller.rb
78
79
  - app/controllers/tuttle/home_controller.rb
79
80
  - app/controllers/tuttle/rails_controller.rb
80
81
  - app/controllers/tuttle/ruby_controller.rb
@@ -84,6 +85,9 @@ files:
84
85
  - app/views/tuttle/cancancan/index.html.erb
85
86
  - app/views/tuttle/cancancan/rule_tester.html.erb
86
87
  - app/views/tuttle/devise/index.html.erb
88
+ - app/views/tuttle/gems/http_clients.html.erb
89
+ - app/views/tuttle/gems/json.html.erb
90
+ - app/views/tuttle/gems/other.html.erb
87
91
  - app/views/tuttle/home/index.html.erb
88
92
  - app/views/tuttle/rails/assets.html.erb
89
93
  - app/views/tuttle/rails/cache.html.erb
@@ -96,62 +100,13 @@ files:
96
100
  - app/views/tuttle/rails/models.html.erb
97
101
  - app/views/tuttle/rails/routes.html.erb
98
102
  - app/views/tuttle/ruby/index.html.erb
103
+ - app/views/tuttle/ruby/miscellaneous.html.erb
104
+ - app/views/tuttle/ruby/tuning.html.erb
99
105
  - config/routes.rb
100
106
  - lib/tasks/tuttle_tasks.rake
101
107
  - lib/tuttle.rb
102
108
  - lib/tuttle/engine.rb
103
109
  - lib/tuttle/version.rb
104
- - test/controllers/tuttle/cancancan_controller_test.rb
105
- - test/controllers/tuttle/devise_controller_test.rb
106
- - test/controllers/tuttle/home_controller_test.rb
107
- - test/controllers/tuttle/rails_controller_test.rb
108
- - test/controllers/tuttle/ruby_controller_test.rb
109
- - test/dummy/Gemfile.lock
110
- - test/dummy/README.rdoc
111
- - test/dummy/Rakefile
112
- - test/dummy/app/assets/javascripts/application.js
113
- - test/dummy/app/assets/stylesheets/application.css
114
- - test/dummy/app/controllers/application_controller.rb
115
- - test/dummy/app/helpers/application_helper.rb
116
- - test/dummy/app/models/ability.rb
117
- - test/dummy/app/models/user.rb
118
- - test/dummy/app/views/layouts/application.html.erb
119
- - test/dummy/config.ru
120
- - test/dummy/config/application.rb
121
- - test/dummy/config/boot.rb
122
- - test/dummy/config/database.yml
123
- - test/dummy/config/environment.rb
124
- - test/dummy/config/environments/development.rb
125
- - test/dummy/config/environments/test.rb
126
- - test/dummy/config/initializers/backtrace_silencers.rb
127
- - test/dummy/config/initializers/devise.rb
128
- - test/dummy/config/initializers/inflections.rb
129
- - test/dummy/config/initializers/mime_types.rb
130
- - test/dummy/config/initializers/secret_token.rb
131
- - test/dummy/config/initializers/session_store.rb
132
- - test/dummy/config/initializers/tuttle.rb
133
- - test/dummy/config/initializers/wrap_parameters.rb
134
- - test/dummy/config/locales/en.yml
135
- - test/dummy/config/routes.rb
136
- - test/dummy/db/migrate/20141229204528_devise_create_users.rb
137
- - test/dummy/db/schema.rb
138
- - test/dummy/public/404.html
139
- - test/dummy/public/422.html
140
- - test/dummy/public/500.html
141
- - test/dummy/public/favicon.ico
142
- - test/dummy/script/rails
143
- - test/dummy/test/fixtures/users.yml
144
- - test/dummy/test/models/user_test.rb
145
- - test/dummy/tmp/cache/assets/test/sprockets/00091e0cb6df543a8e704290f4dec8db
146
- - test/dummy/tmp/cache/assets/test/sprockets/11599cd5b5d6a0a58a5e98c0902e1997
147
- - test/dummy/tmp/cache/assets/test/sprockets/9b2e26c1e54d4ff5ae04270e8f03907f
148
- - test/dummy/tmp/cache/assets/test/sprockets/a65793481a75afa9f660d1032ee66ef5
149
- - test/dummy/tmp/cache/assets/test/sprockets/d9450766086a9f3f994e8c4a2273bfaa
150
- - test/dummy/tmp/cache/assets/test/sprockets/e117b0425a7b9daef8a213c1a2203f00
151
- - test/integration/navigation_test.rb
152
- - test/test_helper.rb
153
- - test/tuttle_test.rb
154
- - test/unit/tuttle/note_test.rb
155
110
  homepage: https://github.com/dgynn/tuttle
156
111
  licenses:
157
112
  - MIT
@@ -164,7 +119,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
164
119
  requirements:
165
120
  - - ">="
166
121
  - !ruby/object:Gem::Version
167
- version: 1.9.3
122
+ version: 2.0.0
168
123
  required_rubygems_version: !ruby/object:Gem::Requirement
169
124
  requirements:
170
125
  - - ">="
@@ -172,59 +127,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
172
127
  version: '0'
173
128
  requirements: []
174
129
  rubyforge_project:
175
- rubygems_version: 2.4.5
130
+ rubygems_version: 2.4.6
176
131
  signing_key:
177
132
  specification_version: 4
178
133
  summary: Tuttle for Rails
179
- test_files:
180
- - test/controllers/tuttle/cancancan_controller_test.rb
181
- - test/controllers/tuttle/devise_controller_test.rb
182
- - test/controllers/tuttle/home_controller_test.rb
183
- - test/controllers/tuttle/rails_controller_test.rb
184
- - test/controllers/tuttle/ruby_controller_test.rb
185
- - test/dummy/app/assets/javascripts/application.js
186
- - test/dummy/app/assets/stylesheets/application.css
187
- - test/dummy/app/controllers/application_controller.rb
188
- - test/dummy/app/helpers/application_helper.rb
189
- - test/dummy/app/models/ability.rb
190
- - test/dummy/app/models/user.rb
191
- - test/dummy/app/views/layouts/application.html.erb
192
- - test/dummy/config/application.rb
193
- - test/dummy/config/boot.rb
194
- - test/dummy/config/database.yml
195
- - test/dummy/config/environment.rb
196
- - test/dummy/config/environments/development.rb
197
- - test/dummy/config/environments/test.rb
198
- - test/dummy/config/initializers/backtrace_silencers.rb
199
- - test/dummy/config/initializers/devise.rb
200
- - test/dummy/config/initializers/inflections.rb
201
- - test/dummy/config/initializers/mime_types.rb
202
- - test/dummy/config/initializers/secret_token.rb
203
- - test/dummy/config/initializers/session_store.rb
204
- - test/dummy/config/initializers/tuttle.rb
205
- - test/dummy/config/initializers/wrap_parameters.rb
206
- - test/dummy/config/locales/en.yml
207
- - test/dummy/config/routes.rb
208
- - test/dummy/config.ru
209
- - test/dummy/db/migrate/20141229204528_devise_create_users.rb
210
- - test/dummy/db/schema.rb
211
- - test/dummy/Gemfile.lock
212
- - test/dummy/public/404.html
213
- - test/dummy/public/422.html
214
- - test/dummy/public/500.html
215
- - test/dummy/public/favicon.ico
216
- - test/dummy/Rakefile
217
- - test/dummy/README.rdoc
218
- - test/dummy/script/rails
219
- - test/dummy/test/fixtures/users.yml
220
- - test/dummy/test/models/user_test.rb
221
- - test/dummy/tmp/cache/assets/test/sprockets/00091e0cb6df543a8e704290f4dec8db
222
- - test/dummy/tmp/cache/assets/test/sprockets/11599cd5b5d6a0a58a5e98c0902e1997
223
- - test/dummy/tmp/cache/assets/test/sprockets/9b2e26c1e54d4ff5ae04270e8f03907f
224
- - test/dummy/tmp/cache/assets/test/sprockets/a65793481a75afa9f660d1032ee66ef5
225
- - test/dummy/tmp/cache/assets/test/sprockets/d9450766086a9f3f994e8c4a2273bfaa
226
- - test/dummy/tmp/cache/assets/test/sprockets/e117b0425a7b9daef8a213c1a2203f00
227
- - test/integration/navigation_test.rb
228
- - test/test_helper.rb
229
- - test/tuttle_test.rb
230
- - test/unit/tuttle/note_test.rb
134
+ test_files: []
@@ -1,56 +0,0 @@
1
- body { background-color: #fff; color: #333; }
2
-
3
- body, p, ol, ul, td {
4
- font-family: verdana, arial, helvetica, sans-serif;
5
- font-size: 13px;
6
- line-height: 18px;
7
- }
8
-
9
- pre {
10
- background-color: #eee;
11
- padding: 10px;
12
- font-size: 11px;
13
- }
14
-
15
- a { color: #000; }
16
- a:visited { color: #666; }
17
- a:hover { color: #fff; background-color:#000; }
18
-
19
- div.field, div.actions {
20
- margin-bottom: 10px;
21
- }
22
-
23
- #notice {
24
- color: green;
25
- }
26
-
27
- .field_with_errors {
28
- padding: 2px;
29
- background-color: red;
30
- display: table;
31
- }
32
-
33
- #error_explanation {
34
- width: 450px;
35
- border: 2px solid red;
36
- padding: 7px;
37
- padding-bottom: 0;
38
- margin-bottom: 20px;
39
- background-color: #f0f0f0;
40
- }
41
-
42
- #error_explanation h2 {
43
- text-align: left;
44
- font-weight: bold;
45
- padding: 5px 5px 5px 15px;
46
- font-size: 12px;
47
- margin: -7px;
48
- margin-bottom: 0px;
49
- background-color: #c00;
50
- color: #fff;
51
- }
52
-
53
- #error_explanation ul li {
54
- font-size: 12px;
55
- list-style: square;
56
- }