guard-sprockets2 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. data/.gitignore +7 -0
  2. data/.rspec +1 -0
  3. data/Gemfile +3 -0
  4. data/LICENSE +22 -0
  5. data/README.md +51 -0
  6. data/Rakefile +10 -0
  7. data/examples/rails_app/.gitignore +5 -0
  8. data/examples/rails_app/Gemfile +32 -0
  9. data/examples/rails_app/Guardfile +6 -0
  10. data/examples/rails_app/README +261 -0
  11. data/examples/rails_app/Rakefile +7 -0
  12. data/examples/rails_app/app/assets/images/rails.png +0 -0
  13. data/examples/rails_app/app/assets/javascripts/application.js +1 -0
  14. data/examples/rails_app/app/assets/javascripts/hello.coffee +1 -0
  15. data/examples/rails_app/app/assets/stylesheets/application.css +7 -0
  16. data/examples/rails_app/app/controllers/application_controller.rb +3 -0
  17. data/examples/rails_app/app/helpers/application_helper.rb +2 -0
  18. data/examples/rails_app/app/mailers/.gitkeep +0 -0
  19. data/examples/rails_app/app/models/.gitkeep +0 -0
  20. data/examples/rails_app/app/views/layouts/application.html.erb +14 -0
  21. data/examples/rails_app/config/application.rb +54 -0
  22. data/examples/rails_app/config/boot.rb +6 -0
  23. data/examples/rails_app/config/database.yml +25 -0
  24. data/examples/rails_app/config/environment.rb +5 -0
  25. data/examples/rails_app/config/environments/development.rb +30 -0
  26. data/examples/rails_app/config/environments/production.rb +60 -0
  27. data/examples/rails_app/config/environments/test.rb +42 -0
  28. data/examples/rails_app/config/initializers/backtrace_silencers.rb +7 -0
  29. data/examples/rails_app/config/initializers/inflections.rb +10 -0
  30. data/examples/rails_app/config/initializers/mime_types.rb +5 -0
  31. data/examples/rails_app/config/initializers/secret_token.rb +7 -0
  32. data/examples/rails_app/config/initializers/session_store.rb +8 -0
  33. data/examples/rails_app/config/initializers/wrap_parameters.rb +14 -0
  34. data/examples/rails_app/config/locales/en.yml +5 -0
  35. data/examples/rails_app/config/routes.rb +58 -0
  36. data/examples/rails_app/config.ru +4 -0
  37. data/examples/rails_app/db/seeds.rb +7 -0
  38. data/examples/rails_app/doc/README_FOR_APP +2 -0
  39. data/examples/rails_app/lib/assets/.gitkeep +0 -0
  40. data/examples/rails_app/lib/tasks/.gitkeep +0 -0
  41. data/examples/rails_app/log/.gitkeep +0 -0
  42. data/examples/rails_app/public/404.html +26 -0
  43. data/examples/rails_app/public/422.html +26 -0
  44. data/examples/rails_app/public/500.html +26 -0
  45. data/examples/rails_app/public/favicon.ico +0 -0
  46. data/examples/rails_app/public/index.html +241 -0
  47. data/examples/rails_app/public/robots.txt +5 -0
  48. data/examples/rails_app/script/rails +6 -0
  49. data/examples/rails_app/vendor/assets/stylesheets/.gitkeep +0 -0
  50. data/examples/rails_app/vendor/plugins/.gitkeep +0 -0
  51. data/examples/sinatra_app/Gemfile +13 -0
  52. data/examples/sinatra_app/Guardfile +6 -0
  53. data/examples/sinatra_app/app.rb +37 -0
  54. data/examples/sinatra_app/assets/javascripts/application.js +1 -0
  55. data/examples/sinatra_app/assets/javascripts/hello.coffee +1 -0
  56. data/examples/sinatra_app/config.ru +5 -0
  57. data/examples/sinatra_app/views/index.erb +15 -0
  58. data/features/rails_support.feature +25 -0
  59. data/features/sinatra_support.feature +25 -0
  60. data/features/step_definitions/general_steps.rb +35 -0
  61. data/features/support/env.rb +9 -0
  62. data/guard-sprockets2.gemspec +32 -0
  63. data/lib/guard/sprockets2/templates/Guardfile +11 -0
  64. data/lib/guard/sprockets2/version.rb +5 -0
  65. data/lib/guard/sprockets2.rb +84 -0
  66. data/spec/guard/sprockets2/compiler_spec.rb +64 -0
  67. data/spec/guard/sprockets2_spec.rb +26 -0
  68. data/spec/spec_helper.rb +6 -0
  69. metadata +236 -0
@@ -0,0 +1,25 @@
1
+ Feature: Sinatra Support
2
+
3
+ Background:
4
+ Given I setup the example sinatra app for testing
5
+ And I clean the generated assets
6
+
7
+ Scenario: Compiling assets
8
+ When I run `guard` interactively
9
+ And I wait 3 seconds
10
+ And I stop the process
11
+ Then the output should contain "Compiling assets"
12
+ And the hello asset should be compiled
13
+
14
+ Scenario: Re-compiling assets
15
+ When I run `guard` interactively
16
+ And I wait 3 seconds
17
+ And a file named "assets/javascripts/goodbye.coffee" with:
18
+ """
19
+ console.log 'Goodbye'
20
+ """
21
+ And I wait 3 seconds
22
+ And I stop the process
23
+ Then the output should contain "Compiling assets"
24
+ And the hello asset should be compiled
25
+ And the goodbye asset should be compiled
@@ -0,0 +1,35 @@
1
+ Given /^I setup the example (\w+) app for testing$/ do |app|
2
+ @app = app
3
+ system "cp -r examples/#{app}_app tmp/aruba/#{app}_app"
4
+ And "I cd to \"#{app}_app\""
5
+ end
6
+
7
+ Given /^I clean the generated assets$/ do
8
+ FileUtils.rm_rf "tmp/aruba/#{@app}_app/public/assets"
9
+ end
10
+
11
+ When /^I wait (\d+) seconds$/ do |seconds|
12
+ sleep(seconds.to_i)
13
+ end
14
+
15
+ When /^I stop the process$/ do
16
+ process = processes.first
17
+ pid = process[1].instance_variable_get("@process").pid
18
+ Process.kill("INT", pid)
19
+ end
20
+
21
+ Then /^the hello asset should be compiled$/ do
22
+ files = Dir["tmp/aruba/#{@app}_app/public/assets/*.js"]
23
+ files.count.should eq 1
24
+
25
+ file = files.first
26
+ File.read(file).should include("console.log('Hello')")
27
+ end
28
+
29
+ Then /^the goodbye asset should be compiled$/ do
30
+ files = Dir["tmp/aruba/#{@app}_app/public/assets/*.js"]
31
+ files.count.should eq 1
32
+
33
+ file = files.first
34
+ File.read(file).should include("console.log('Goodbye')")
35
+ end
@@ -0,0 +1,9 @@
1
+ require 'bundler/setup'
2
+ require 'guard/sprockets2'
3
+
4
+ require 'aruba/cucumber'
5
+
6
+ Before do
7
+ system "mkdir -p tmp/aruba"
8
+ @aruba_timeout_seconds = 6
9
+ end
@@ -0,0 +1,32 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "guard/sprockets2/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "guard-sprockets2"
7
+ s.version = Guard::Sprockets2Version::VERSION
8
+ s.authors = ["Steve Hodgkiss"]
9
+ s.email = ["steve@hodgkiss.me.uk"]
10
+ s.homepage = ""
11
+ s.summary = %q{}
12
+ s.description = %q{}
13
+
14
+ s.rubyforge_project = "guard-sprockets2"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ s.add_dependency 'guard'
22
+ s.add_dependency 'sprockets', '~> 2.0'
23
+
24
+ s.add_development_dependency 'rspec'
25
+ s.add_development_dependency 'coffee-script'
26
+ s.add_development_dependency 'uglifier'
27
+ s.add_development_dependency 'sass'
28
+ s.add_development_dependency 'sinatra'
29
+ s.add_development_dependency 'cucumber'
30
+ s.add_development_dependency 'aruba'
31
+ s.add_development_dependency 'rails', '~> 3.1'
32
+ end
@@ -0,0 +1,11 @@
1
+ require './app' # Require your app with sprockets
2
+
3
+ guard 'sprockets2', :sprockets => App.settings.sprockets do
4
+ watch(%r{^assets/.+$})
5
+ watch('app.rb')
6
+ end
7
+
8
+ guard 'sprockets2', :sprockets => Rails.config.assets do
9
+ watch(%r{^app/assets/.+$})
10
+ watch('config/application.rb')
11
+ end
@@ -0,0 +1,5 @@
1
+ module Guard
2
+ module Sprockets2Version
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,84 @@
1
+ require 'guard/sprockets2/version'
2
+ require 'guard'
3
+ require 'guard/guard'
4
+ require 'rake'
5
+ require 'sprockets'
6
+
7
+ module Guard
8
+ class Sprockets2 < Guard
9
+ def initialize(watchers = [], options = {})
10
+ super
11
+ @compiler = Compiler.new(options)
12
+ end
13
+
14
+ def start
15
+ compile_assets
16
+ end
17
+
18
+ def run_all
19
+ compile_assets
20
+ end
21
+
22
+ def run_on_change(paths = [])
23
+ compile_assets
24
+ end
25
+
26
+ class Compiler
27
+ def initialize(options = {})
28
+ @sprockets = options[:sprockets]
29
+ @assets_path = options[:assets_path]
30
+ @precompile = options[:precompile]
31
+ if defined?(Rails)
32
+ @sprockets ||= Rails.application.assets
33
+ @assets_path ||= File.join(Rails.public_path, Rails.application.config.assets.prefix)
34
+ @precompile ||= Rails.application.config.assets.precompile
35
+ else
36
+ @assets_path ||= "#{Dir.pwd}/public/assets"
37
+ @precompile ||= [ /\w+\.(?!js|css).+/, /application.(css|js)$/ ]
38
+ end
39
+ end
40
+
41
+ def clean
42
+ FileUtils.rm_rf @assets_path, :secure => true
43
+ end
44
+
45
+ def compile
46
+ target = Pathname.new(@assets_path)
47
+ @precompile.each do |path|
48
+ @sprockets.each_logical_path do |logical_path|
49
+ if path.is_a?(Regexp)
50
+ next unless path.match(logical_path)
51
+ else
52
+ next unless File.fnmatch(path.to_s, logical_path)
53
+ end
54
+
55
+ if asset = @sprockets.find_asset(logical_path)
56
+ filename = target.join(asset.digest_path)
57
+ FileUtils.mkdir_p filename.dirname
58
+ asset.write_to(filename)
59
+ asset.write_to("#{filename}.gz") if filename.to_s =~ /\.(css|js)$/
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+
66
+ protected
67
+
68
+ def compile_assets
69
+ @compiler.clean
70
+ print "Compiling assets... " unless ENV["GUARD_ENV"] == "test"
71
+ time_taken = time do
72
+ @compiler.compile
73
+ end
74
+ UI.info "completed in #{time_taken} seconds"
75
+ end
76
+
77
+ def time(&block)
78
+ start = Time.now
79
+ yield
80
+ finish = Time.now
81
+ finish - start
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,64 @@
1
+ require 'spec_helper'
2
+
3
+ describe Guard::Sprockets2::Compiler do
4
+
5
+ def write_file(path, data)
6
+ File.open(path, "wb") {|f| f.write data }
7
+ end
8
+
9
+ let(:root) { Pathname.new(File.expand_path("../../../tmp", __FILE__)) }
10
+ let(:sprockets) { Sprockets::Environment.new(root.to_s) }
11
+ let(:assets_path) { root.join("assets") }
12
+ let(:compiled_path) { root.join("compiled") }
13
+
14
+ before do
15
+ FileUtils.mkdir_p assets_path
16
+ FileUtils.mkdir_p compiled_path
17
+ sprockets.append_path(assets_path)
18
+ write_file(assets_path.join("application.js").to_s, "//= require_tree .")
19
+ end
20
+
21
+ after { FileUtils.rm_rf root, :secure => true }
22
+
23
+ context 'preconfigured' do
24
+ subject { Guard::Sprockets2::Compiler.new(:sprockets => sprockets, :assets_path => compiled_path.to_s) }
25
+
26
+ it "compiles assets" do
27
+ write_file(assets_path.join("hello.coffee").to_s, "console.log 'hello'")
28
+ subject.compile
29
+ asset = sprockets.find_asset("application.js")
30
+ app_js_path = compiled_path.join(asset.digest_path)
31
+
32
+ app_js_path.should exist
33
+ app_js = app_js_path.read
34
+ app_js.should include("console.log('hello')")
35
+ end
36
+
37
+ end
38
+
39
+ context 'with rails loaded' do
40
+ before do
41
+ write_file(assets_path.join("hello.coffee").to_s, "console.log 'hello2'")
42
+ module Rails
43
+ end
44
+ Rails.stub(:public_path => root)
45
+ Rails.stub_chain(:application, :assets).and_return(sprockets)
46
+ Rails.stub_chain(:application, :config, :assets, :prefix).and_return('compiled')
47
+ Rails.stub_chain(:application, :config, :assets, :precompile).and_return([ /\w+\.(?!js|css).+/, /application.(css|js)$/ ])
48
+ subject.compile
49
+ end
50
+
51
+ subject { Guard::Sprockets2::Compiler.new }
52
+
53
+ it "compiles assets" do
54
+ asset = sprockets.find_asset("application.js")
55
+ app_js_path = compiled_path.join(asset.digest_path)
56
+
57
+ app_js_path.should exist
58
+ app_js = app_js_path.read
59
+ app_js.should include("console.log('hello2')")
60
+ end
61
+
62
+ after { Object.send(:remove_const, :Rails) }
63
+ end
64
+ end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe Guard::Sprockets2 do
4
+
5
+ before do
6
+ @options = {:option => true}
7
+ @compiler = mock(:clean => true, :compile => true)
8
+ Guard::Sprockets2::Compiler.stub(:new => @compiler)
9
+ @guard = described_class.new(['watchers'], @options)
10
+ end
11
+
12
+ %w[ start run_all run_on_change ].each do |method|
13
+ describe "##{method}" do
14
+ it "cleans" do
15
+ @compiler.should_receive(:clean)
16
+ @guard.send(method)
17
+ end
18
+
19
+ it "compiles" do
20
+ @compiler.should_receive(:compile)
21
+ @guard.send(method)
22
+ end
23
+ end
24
+ end
25
+
26
+ end
@@ -0,0 +1,6 @@
1
+ require 'bundler/setup'
2
+ require 'rspec'
3
+ require 'guard/sprockets2'
4
+
5
+ require 'pathname'
6
+ ENV["GUARD_ENV"] = "test"
metadata ADDED
@@ -0,0 +1,236 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: guard-sprockets2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Steve Hodgkiss
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-09-05 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: guard
16
+ requirement: &70330975101420 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70330975101420
25
+ - !ruby/object:Gem::Dependency
26
+ name: sprockets
27
+ requirement: &70330975100060 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: '2.0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70330975100060
36
+ - !ruby/object:Gem::Dependency
37
+ name: rspec
38
+ requirement: &70330975092820 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70330975092820
47
+ - !ruby/object:Gem::Dependency
48
+ name: coffee-script
49
+ requirement: &70330975091760 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *70330975091760
58
+ - !ruby/object:Gem::Dependency
59
+ name: uglifier
60
+ requirement: &70330975091040 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *70330975091040
69
+ - !ruby/object:Gem::Dependency
70
+ name: sass
71
+ requirement: &70330975090260 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *70330975090260
80
+ - !ruby/object:Gem::Dependency
81
+ name: sinatra
82
+ requirement: &70330975089460 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *70330975089460
91
+ - !ruby/object:Gem::Dependency
92
+ name: cucumber
93
+ requirement: &70330975088760 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *70330975088760
102
+ - !ruby/object:Gem::Dependency
103
+ name: aruba
104
+ requirement: &70330975087520 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: *70330975087520
113
+ - !ruby/object:Gem::Dependency
114
+ name: rails
115
+ requirement: &70330975085940 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ~>
119
+ - !ruby/object:Gem::Version
120
+ version: '3.1'
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: *70330975085940
124
+ description: ''
125
+ email:
126
+ - steve@hodgkiss.me.uk
127
+ executables: []
128
+ extensions: []
129
+ extra_rdoc_files: []
130
+ files:
131
+ - .gitignore
132
+ - .rspec
133
+ - Gemfile
134
+ - LICENSE
135
+ - README.md
136
+ - Rakefile
137
+ - examples/rails_app/.gitignore
138
+ - examples/rails_app/Gemfile
139
+ - examples/rails_app/Guardfile
140
+ - examples/rails_app/README
141
+ - examples/rails_app/Rakefile
142
+ - examples/rails_app/app/assets/images/rails.png
143
+ - examples/rails_app/app/assets/javascripts/application.js
144
+ - examples/rails_app/app/assets/javascripts/hello.coffee
145
+ - examples/rails_app/app/assets/stylesheets/application.css
146
+ - examples/rails_app/app/controllers/application_controller.rb
147
+ - examples/rails_app/app/helpers/application_helper.rb
148
+ - examples/rails_app/app/mailers/.gitkeep
149
+ - examples/rails_app/app/models/.gitkeep
150
+ - examples/rails_app/app/views/layouts/application.html.erb
151
+ - examples/rails_app/config.ru
152
+ - examples/rails_app/config/application.rb
153
+ - examples/rails_app/config/boot.rb
154
+ - examples/rails_app/config/database.yml
155
+ - examples/rails_app/config/environment.rb
156
+ - examples/rails_app/config/environments/development.rb
157
+ - examples/rails_app/config/environments/production.rb
158
+ - examples/rails_app/config/environments/test.rb
159
+ - examples/rails_app/config/initializers/backtrace_silencers.rb
160
+ - examples/rails_app/config/initializers/inflections.rb
161
+ - examples/rails_app/config/initializers/mime_types.rb
162
+ - examples/rails_app/config/initializers/secret_token.rb
163
+ - examples/rails_app/config/initializers/session_store.rb
164
+ - examples/rails_app/config/initializers/wrap_parameters.rb
165
+ - examples/rails_app/config/locales/en.yml
166
+ - examples/rails_app/config/routes.rb
167
+ - examples/rails_app/db/seeds.rb
168
+ - examples/rails_app/doc/README_FOR_APP
169
+ - examples/rails_app/lib/assets/.gitkeep
170
+ - examples/rails_app/lib/tasks/.gitkeep
171
+ - examples/rails_app/log/.gitkeep
172
+ - examples/rails_app/public/404.html
173
+ - examples/rails_app/public/422.html
174
+ - examples/rails_app/public/500.html
175
+ - examples/rails_app/public/favicon.ico
176
+ - examples/rails_app/public/index.html
177
+ - examples/rails_app/public/robots.txt
178
+ - examples/rails_app/script/rails
179
+ - examples/rails_app/vendor/assets/stylesheets/.gitkeep
180
+ - examples/rails_app/vendor/plugins/.gitkeep
181
+ - examples/sinatra_app/Gemfile
182
+ - examples/sinatra_app/Guardfile
183
+ - examples/sinatra_app/app.rb
184
+ - examples/sinatra_app/assets/javascripts/application.js
185
+ - examples/sinatra_app/assets/javascripts/hello.coffee
186
+ - examples/sinatra_app/config.ru
187
+ - examples/sinatra_app/views/index.erb
188
+ - features/rails_support.feature
189
+ - features/sinatra_support.feature
190
+ - features/step_definitions/general_steps.rb
191
+ - features/support/env.rb
192
+ - guard-sprockets2.gemspec
193
+ - lib/guard/sprockets2.rb
194
+ - lib/guard/sprockets2/templates/Guardfile
195
+ - lib/guard/sprockets2/version.rb
196
+ - spec/guard/sprockets2/compiler_spec.rb
197
+ - spec/guard/sprockets2_spec.rb
198
+ - spec/spec_helper.rb
199
+ homepage: ''
200
+ licenses: []
201
+ post_install_message:
202
+ rdoc_options: []
203
+ require_paths:
204
+ - lib
205
+ required_ruby_version: !ruby/object:Gem::Requirement
206
+ none: false
207
+ requirements:
208
+ - - ! '>='
209
+ - !ruby/object:Gem::Version
210
+ version: '0'
211
+ segments:
212
+ - 0
213
+ hash: -3398072810507629991
214
+ required_rubygems_version: !ruby/object:Gem::Requirement
215
+ none: false
216
+ requirements:
217
+ - - ! '>='
218
+ - !ruby/object:Gem::Version
219
+ version: '0'
220
+ segments:
221
+ - 0
222
+ hash: -3398072810507629991
223
+ requirements: []
224
+ rubyforge_project: guard-sprockets2
225
+ rubygems_version: 1.8.6
226
+ signing_key:
227
+ specification_version: 3
228
+ summary: ''
229
+ test_files:
230
+ - features/rails_support.feature
231
+ - features/sinatra_support.feature
232
+ - features/step_definitions/general_steps.rb
233
+ - features/support/env.rb
234
+ - spec/guard/sprockets2/compiler_spec.rb
235
+ - spec/guard/sprockets2_spec.rb
236
+ - spec/spec_helper.rb