rafters 0.0.1

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 (69) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +20 -0
  3. data/.rspec +2 -0
  4. data/.rvmrc +53 -0
  5. data/Gemfile +18 -0
  6. data/MIT-LICENSE +20 -0
  7. data/README.md +168 -0
  8. data/Rakefile +32 -0
  9. data/lib/generators/rafters/component/component_generator.rb +33 -0
  10. data/lib/generators/rafters/component/templates/assets/javascripts/component.js.erb +0 -0
  11. data/lib/generators/rafters/component/templates/assets/stylesheets/component.scss.erb +0 -0
  12. data/lib/generators/rafters/component/templates/component.rb.erb +4 -0
  13. data/lib/generators/rafters/component/templates/views/component.html.erb +0 -0
  14. data/lib/generators/rafters/install/install_generator.rb +23 -0
  15. data/lib/generators/rafters/install/templates/initializer.rb +2 -0
  16. data/lib/rafters/component.rb +70 -0
  17. data/lib/rafters/component_context.rb +19 -0
  18. data/lib/rafters/component_renderer.rb +20 -0
  19. data/lib/rafters/directive_processor.rb +9 -0
  20. data/lib/rafters/engine.rb +33 -0
  21. data/lib/rafters/version.rb +3 -0
  22. data/lib/rafters.rb +27 -0
  23. data/lib/tasks/rafters_tasks.rake +4 -0
  24. data/rafters.gemspec +28 -0
  25. data/spec/dummy/README.rdoc +261 -0
  26. data/spec/dummy/Rakefile +7 -0
  27. data/spec/dummy/app/assets/javascripts/application.js +16 -0
  28. data/spec/dummy/app/assets/javascripts/foos.js +2 -0
  29. data/spec/dummy/app/assets/stylesheets/application.css +14 -0
  30. data/spec/dummy/app/assets/stylesheets/foos.css +4 -0
  31. data/spec/dummy/app/components/heading/assets/javascripts/heading_component.js +0 -0
  32. data/spec/dummy/app/components/heading/assets/stylesheets/heading_component.css +0 -0
  33. data/spec/dummy/app/components/heading/heading_component.rb +13 -0
  34. data/spec/dummy/app/components/heading/views/heading_component.html.erb +1 -0
  35. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  36. data/spec/dummy/app/controllers/foos_controller.rb +5 -0
  37. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  38. data/spec/dummy/app/helpers/foos_helper.rb +2 -0
  39. data/spec/dummy/app/mailers/.gitkeep +0 -0
  40. data/spec/dummy/app/models/.gitkeep +0 -0
  41. data/spec/dummy/app/views/foos/index.html.erb +1 -0
  42. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  43. data/spec/dummy/config/application.rb +59 -0
  44. data/spec/dummy/config/boot.rb +10 -0
  45. data/spec/dummy/config/database.yml +25 -0
  46. data/spec/dummy/config/environment.rb +5 -0
  47. data/spec/dummy/config/environments/development.rb +37 -0
  48. data/spec/dummy/config/environments/production.rb +70 -0
  49. data/spec/dummy/config/environments/test.rb +37 -0
  50. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  51. data/spec/dummy/config/initializers/inflections.rb +15 -0
  52. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  53. data/spec/dummy/config/initializers/rafters.rb +2 -0
  54. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  55. data/spec/dummy/config/initializers/session_store.rb +8 -0
  56. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  57. data/spec/dummy/config/locales/en.yml +5 -0
  58. data/spec/dummy/config/routes.rb +5 -0
  59. data/spec/dummy/config.ru +4 -0
  60. data/spec/dummy/lib/assets/.gitkeep +0 -0
  61. data/spec/dummy/log/.gitkeep +0 -0
  62. data/spec/dummy/public/404.html +26 -0
  63. data/spec/dummy/public/422.html +26 -0
  64. data/spec/dummy/public/500.html +25 -0
  65. data/spec/dummy/public/favicon.ico +0 -0
  66. data/spec/dummy/script/rails +6 -0
  67. data/spec/rafters/component_spec.rb +153 -0
  68. data/spec/spec_helper.rb +13 -0
  69. metadata +241 -0
@@ -0,0 +1,7 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Your secret key for verifying the integrity of signed cookies.
4
+ # If you change this key, all old signed cookies will become invalid!
5
+ # Make sure the secret is at least 30 characters and all random,
6
+ # no regular words or you'll be exposed to dictionary attacks.
7
+ Dummy::Application.config.secret_token = '304950c1cbff2fec75b62ede6d392171fc25435481002bd7ba9d911433a277bb96aed01bf90572d18f819d20a5ec45a835ccfbfe42347f0c3a0fb527e543c694'
@@ -0,0 +1,8 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ Dummy::Application.config.session_store :cookie_store, key: '_dummy_session'
4
+
5
+ # Use the database for sessions instead of the cookie-based default,
6
+ # which shouldn't be used to store highly confidential information
7
+ # (create the session table with "rails generate session_migration")
8
+ # Dummy::Application.config.session_store :active_record_store
@@ -0,0 +1,14 @@
1
+ # Be sure to restart your server when you modify this file.
2
+ #
3
+ # This file contains settings for ActionController::ParamsWrapper which
4
+ # is enabled by default.
5
+
6
+ # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
7
+ ActiveSupport.on_load(:action_controller) do
8
+ wrap_parameters format: [:json]
9
+ end
10
+
11
+ # Disable root element in JSON by default.
12
+ ActiveSupport.on_load(:active_record) do
13
+ self.include_root_in_json = false
14
+ end
@@ -0,0 +1,5 @@
1
+ # Sample localization file for English. Add more files in this directory for other locales.
2
+ # See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
3
+
4
+ en:
5
+ hello: "Hello world"
@@ -0,0 +1,5 @@
1
+ Rails.application.routes.draw do
2
+ mount Rafters::Engine => "/rafters"
3
+
4
+ resources :foos
5
+ end
@@ -0,0 +1,4 @@
1
+ # This file is used by Rack-based servers to start the application.
2
+
3
+ require ::File.expand_path('../config/environment', __FILE__)
4
+ run Dummy::Application
File without changes
File without changes
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/404.html -->
21
+ <div class="dialog">
22
+ <h1>The page you were looking for doesn't exist.</h1>
23
+ <p>You may have mistyped the address or the page may have moved.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/422.html -->
21
+ <div class="dialog">
22
+ <h1>The change you wanted was rejected.</h1>
23
+ <p>Maybe you tried to change something you didn't have access to.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,25 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/500.html -->
21
+ <div class="dialog">
22
+ <h1>We're sorry, but something went wrong.</h1>
23
+ </div>
24
+ </body>
25
+ </html>
File without changes
@@ -0,0 +1,6 @@
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.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,153 @@
1
+ require 'spec_helper'
2
+
3
+ class HeadingComponent
4
+ include Rafters::Component
5
+ end
6
+
7
+ describe Rafters::Component do
8
+ describe ".template_name" do
9
+ it "set the component's template name to the provided value" do
10
+ HeadingComponent.template_name("foo_bar_baz")
11
+ HeadingComponent._template_name == "foo_bar_baz"
12
+ end
13
+ end
14
+
15
+ describe ".attribute" do
16
+ it "adds the provided method to the component's attributes" do
17
+ HeadingComponent.send(:define_method, :title, -> { "Lorem Ipsum" })
18
+ HeadingComponent.attribute(:title)
19
+
20
+ heading = HeadingComponent.new
21
+ heading.attributes.should have_key(:title)
22
+ end
23
+ end
24
+
25
+ describe ".setting" do
26
+ it "adds the provided key to the component's settings" do
27
+ HeadingComponent.setting(:type)
28
+
29
+ heading = HeadingComponent.new
30
+ heading.settings.should respond_to(:type)
31
+ end
32
+
33
+ context "with a :default value" do
34
+ it "sets the setting's value to the provided value when no value is available" do
35
+ HeadingComponent.setting(:type, default: "h1")
36
+
37
+ heading = HeadingComponent.new
38
+ heading.settings.type.should == "h1"
39
+ end
40
+ end
41
+
42
+ context "with the :required option" do
43
+ it "raises an error when accessing the settings if the value is nil" do
44
+ HeadingComponent.setting(:type, required: true)
45
+
46
+ heading = HeadingComponent.new
47
+ -> { heading.settings }.should raise_error(Rafters::Component::SettingRequired)
48
+ end
49
+ end
50
+ end
51
+
52
+ describe "#attributes" do
53
+ before do
54
+ HeadingComponent.send(:define_method, :title, -> { "Lorem Ipsum" })
55
+ HeadingComponent.attribute(:title)
56
+ end
57
+
58
+ subject { HeadingComponent.new }
59
+
60
+ it "returns the registered attributes and their values" do
61
+ subject.attributes.should == Hashie::Mash.new({ title: "Lorem Ipsum" })
62
+ end
63
+ end
64
+
65
+ describe "#settings" do
66
+ before do
67
+ HeadingComponent.setting(:type)
68
+ end
69
+
70
+ subject { HeadingComponent.new({ type: "h2" }) }
71
+
72
+ it "returns the registered settings and their values" do
73
+ subject.settings.should == Hashie::Mash.new({ type: "h2" })
74
+ end
75
+ end
76
+
77
+ describe "#template_name" do
78
+ subject { HeadingComponent.new }
79
+
80
+ context "with no specified template name" do
81
+ it "returns the inferred template name" do
82
+ subject.template_name.should == "heading_component"
83
+ end
84
+ end
85
+
86
+ context "with a specified template name" do
87
+ context "(string / symbol)" do
88
+ before do
89
+ HeadingComponent.stub(:_template_name).and_return("foo_bar_baz")
90
+ end
91
+
92
+ it "returns the specified template name" do
93
+ subject.template_name.should == "foo_bar_baz"
94
+ end
95
+ end
96
+
97
+ context "(proc)" do
98
+ before do
99
+ HeadingComponent.send(:define_method, :foo_bar, -> { "foo_bar_bacon" })
100
+ HeadingComponent.stub(:_template_name).and_return(lambda { |c| c.foo_bar })
101
+ end
102
+
103
+ it "calls the proc and returns the stringified result" do
104
+ subject.template_name.should == "foo_bar_bacon"
105
+ end
106
+ end
107
+ end
108
+ end
109
+
110
+ describe "#current" do
111
+ subject { HeadingComponent.new }
112
+
113
+ let(:controller) { Object.new }
114
+
115
+ before do
116
+ subject.controller = controller
117
+ end
118
+
119
+ context "when referencing an instance variable in the controller" do
120
+ before do
121
+ controller.instance_variable_set("@foo_bar", "lorem ipsum")
122
+ end
123
+
124
+ it "returns the value of the instance variable" do
125
+ subject.current(:foo_bar).should == "lorem ipsum"
126
+ end
127
+ end
128
+
129
+ context "when referencing a method in the controller" do
130
+ before do
131
+ controller.singleton_class.send(:define_method, :lorem_ipsum, -> { "foo bar" })
132
+ end
133
+
134
+ it "returns the value of the method" do
135
+ subject.current(:lorem_ipsum).should == "foo bar"
136
+ end
137
+ end
138
+
139
+ context "when there is neither a method nor an instance variable with the given name in the controller" do
140
+ it "raises an error" do
141
+ -> { subject.current(:doesnt_exist) }.should raise_error(Rafters::Component::CurrentVariableOrMethodNameMissing)
142
+ end
143
+ end
144
+ end
145
+
146
+ after do
147
+ # A little housekeeping after each spec runs, so that
148
+ # we have fresh values for each class attribute
149
+ HeadingComponent._attributes = nil
150
+ HeadingComponent._settings = nil
151
+ HeadingComponent._template_name = nil
152
+ end
153
+ end
@@ -0,0 +1,13 @@
1
+ ENV["RAILS_ENV"] ||= 'test'
2
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
3
+ require 'rubygems'
4
+ require 'bundler/setup'
5
+
6
+ require 'rafters'
7
+
8
+ RSpec.configure do |config|
9
+ config.treat_symbols_as_metadata_keys_with_true_values = true
10
+ config.run_all_when_everything_filtered = true
11
+ config.filter_run :focus
12
+ config.order = 'random'
13
+ end
metadata ADDED
@@ -0,0 +1,241 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rafters
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Andrew Hite
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-08-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: debugger
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '1.6'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '1.6'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '10.1'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '10.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec-rails
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '2.14'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '2.14'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rails
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: 4.0.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: 4.0.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: hashie
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: 2.0.5
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: 2.0.5
97
+ description: Rafters lets you think about each page of your application as a collection
98
+ of small pieces instead of monolithic, difficult to maintain views.
99
+ email:
100
+ - andrew@andrew-hite.com
101
+ executables: []
102
+ extensions: []
103
+ extra_rdoc_files: []
104
+ files:
105
+ - .gitignore
106
+ - .rspec
107
+ - .rvmrc
108
+ - Gemfile
109
+ - MIT-LICENSE
110
+ - README.md
111
+ - Rakefile
112
+ - lib/generators/rafters/component/component_generator.rb
113
+ - lib/generators/rafters/component/templates/assets/javascripts/component.js.erb
114
+ - lib/generators/rafters/component/templates/assets/stylesheets/component.scss.erb
115
+ - lib/generators/rafters/component/templates/component.rb.erb
116
+ - lib/generators/rafters/component/templates/views/component.html.erb
117
+ - lib/generators/rafters/install/install_generator.rb
118
+ - lib/generators/rafters/install/templates/initializer.rb
119
+ - lib/rafters.rb
120
+ - lib/rafters/component.rb
121
+ - lib/rafters/component_context.rb
122
+ - lib/rafters/component_renderer.rb
123
+ - lib/rafters/directive_processor.rb
124
+ - lib/rafters/engine.rb
125
+ - lib/rafters/version.rb
126
+ - lib/tasks/rafters_tasks.rake
127
+ - rafters.gemspec
128
+ - spec/dummy/README.rdoc
129
+ - spec/dummy/Rakefile
130
+ - spec/dummy/app/assets/javascripts/application.js
131
+ - spec/dummy/app/assets/javascripts/foos.js
132
+ - spec/dummy/app/assets/stylesheets/application.css
133
+ - spec/dummy/app/assets/stylesheets/foos.css
134
+ - spec/dummy/app/components/heading/assets/javascripts/heading_component.js
135
+ - spec/dummy/app/components/heading/assets/stylesheets/heading_component.css
136
+ - spec/dummy/app/components/heading/heading_component.rb
137
+ - spec/dummy/app/components/heading/views/heading_component.html.erb
138
+ - spec/dummy/app/controllers/application_controller.rb
139
+ - spec/dummy/app/controllers/foos_controller.rb
140
+ - spec/dummy/app/helpers/application_helper.rb
141
+ - spec/dummy/app/helpers/foos_helper.rb
142
+ - spec/dummy/app/mailers/.gitkeep
143
+ - spec/dummy/app/models/.gitkeep
144
+ - spec/dummy/app/views/foos/index.html.erb
145
+ - spec/dummy/app/views/layouts/application.html.erb
146
+ - spec/dummy/config.ru
147
+ - spec/dummy/config/application.rb
148
+ - spec/dummy/config/boot.rb
149
+ - spec/dummy/config/database.yml
150
+ - spec/dummy/config/environment.rb
151
+ - spec/dummy/config/environments/development.rb
152
+ - spec/dummy/config/environments/production.rb
153
+ - spec/dummy/config/environments/test.rb
154
+ - spec/dummy/config/initializers/backtrace_silencers.rb
155
+ - spec/dummy/config/initializers/inflections.rb
156
+ - spec/dummy/config/initializers/mime_types.rb
157
+ - spec/dummy/config/initializers/rafters.rb
158
+ - spec/dummy/config/initializers/secret_token.rb
159
+ - spec/dummy/config/initializers/session_store.rb
160
+ - spec/dummy/config/initializers/wrap_parameters.rb
161
+ - spec/dummy/config/locales/en.yml
162
+ - spec/dummy/config/routes.rb
163
+ - spec/dummy/lib/assets/.gitkeep
164
+ - spec/dummy/log/.gitkeep
165
+ - spec/dummy/public/404.html
166
+ - spec/dummy/public/422.html
167
+ - spec/dummy/public/500.html
168
+ - spec/dummy/public/favicon.ico
169
+ - spec/dummy/script/rails
170
+ - spec/rafters/component_spec.rb
171
+ - spec/spec_helper.rb
172
+ homepage: ''
173
+ licenses:
174
+ - MIT
175
+ metadata: {}
176
+ post_install_message:
177
+ rdoc_options: []
178
+ require_paths:
179
+ - lib
180
+ required_ruby_version: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - '>='
183
+ - !ruby/object:Gem::Version
184
+ version: '0'
185
+ required_rubygems_version: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ requirements: []
191
+ rubyforge_project:
192
+ rubygems_version: 2.0.3
193
+ signing_key:
194
+ specification_version: 4
195
+ summary: Rafters lets you think about each page of your application as a collection
196
+ of small pieces instead of monolithic, difficult to maintain views.
197
+ test_files:
198
+ - spec/dummy/README.rdoc
199
+ - spec/dummy/Rakefile
200
+ - spec/dummy/app/assets/javascripts/application.js
201
+ - spec/dummy/app/assets/javascripts/foos.js
202
+ - spec/dummy/app/assets/stylesheets/application.css
203
+ - spec/dummy/app/assets/stylesheets/foos.css
204
+ - spec/dummy/app/components/heading/assets/javascripts/heading_component.js
205
+ - spec/dummy/app/components/heading/assets/stylesheets/heading_component.css
206
+ - spec/dummy/app/components/heading/heading_component.rb
207
+ - spec/dummy/app/components/heading/views/heading_component.html.erb
208
+ - spec/dummy/app/controllers/application_controller.rb
209
+ - spec/dummy/app/controllers/foos_controller.rb
210
+ - spec/dummy/app/helpers/application_helper.rb
211
+ - spec/dummy/app/helpers/foos_helper.rb
212
+ - spec/dummy/app/mailers/.gitkeep
213
+ - spec/dummy/app/models/.gitkeep
214
+ - spec/dummy/app/views/foos/index.html.erb
215
+ - spec/dummy/app/views/layouts/application.html.erb
216
+ - spec/dummy/config.ru
217
+ - spec/dummy/config/application.rb
218
+ - spec/dummy/config/boot.rb
219
+ - spec/dummy/config/database.yml
220
+ - spec/dummy/config/environment.rb
221
+ - spec/dummy/config/environments/development.rb
222
+ - spec/dummy/config/environments/production.rb
223
+ - spec/dummy/config/environments/test.rb
224
+ - spec/dummy/config/initializers/backtrace_silencers.rb
225
+ - spec/dummy/config/initializers/inflections.rb
226
+ - spec/dummy/config/initializers/mime_types.rb
227
+ - spec/dummy/config/initializers/rafters.rb
228
+ - spec/dummy/config/initializers/secret_token.rb
229
+ - spec/dummy/config/initializers/session_store.rb
230
+ - spec/dummy/config/initializers/wrap_parameters.rb
231
+ - spec/dummy/config/locales/en.yml
232
+ - spec/dummy/config/routes.rb
233
+ - spec/dummy/lib/assets/.gitkeep
234
+ - spec/dummy/log/.gitkeep
235
+ - spec/dummy/public/404.html
236
+ - spec/dummy/public/422.html
237
+ - spec/dummy/public/500.html
238
+ - spec/dummy/public/favicon.ico
239
+ - spec/dummy/script/rails
240
+ - spec/rafters/component_spec.rb
241
+ - spec/spec_helper.rb