initiate 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +5 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +11 -0
  5. data/CONTRIBUTING.md +48 -0
  6. data/Gemfile +3 -0
  7. data/LICENSE +21 -0
  8. data/NEWS.md +444 -0
  9. data/README.md +129 -0
  10. data/Rakefile +8 -0
  11. data/bin/initiate +18 -0
  12. data/bin/rake +16 -0
  13. data/bin/rspec +16 -0
  14. data/bin/setup +13 -0
  15. data/lib/initiate.rb +6 -0
  16. data/lib/initiate/actions.rb +33 -0
  17. data/lib/initiate/app_builder.rb +341 -0
  18. data/lib/initiate/config.rb +9 -0
  19. data/lib/initiate/generators/app_generator.rb +174 -0
  20. data/lib/initiate/version.rb +5 -0
  21. data/spec/features/new_project_spec.rb +131 -0
  22. data/spec/spec_helper.rb +14 -0
  23. data/spec/support/initiate.rb +51 -0
  24. data/suspenders.gemspec +35 -0
  25. data/templates/Gemfile.erb +53 -0
  26. data/templates/Procfile +2 -0
  27. data/templates/README.md.erb +18 -0
  28. data/templates/_flashes.html.erb +7 -0
  29. data/templates/_javascript.html.erb +6 -0
  30. data/templates/action_mailer.rb +5 -0
  31. data/templates/annotate.rake +4 -0
  32. data/templates/application.html.slim.erb +10 -0
  33. data/templates/application.scss +1 -0
  34. data/templates/bin_setup.erb +32 -0
  35. data/templates/browserslist +4 -0
  36. data/templates/bugsnag.rb +5 -0
  37. data/templates/bundler_audit.rake +12 -0
  38. data/templates/capybara_webkit.rb +5 -0
  39. data/templates/config_i18n_tasks.yml +13 -0
  40. data/templates/config_locales_en.yml.erb +19 -0
  41. data/templates/database_cleaner_rspec.rb +21 -0
  42. data/templates/deploy.rb +95 -0
  43. data/templates/dev.rake +12 -0
  44. data/templates/disable_xml_params.rb +1 -0
  45. data/templates/errors.rb +34 -0
  46. data/templates/factories.rb +2 -0
  47. data/templates/factory_girl_rspec.rb +3 -0
  48. data/templates/flashes_helper.rb +5 -0
  49. data/templates/i18n.rb +3 -0
  50. data/templates/json_encoding.rb +1 -0
  51. data/templates/postgresql_database.yml.erb +23 -0
  52. data/templates/rails_helper.rb +22 -0
  53. data/templates/sample.env +9 -0
  54. data/templates/secrets.yml +15 -0
  55. data/templates/shoulda_matchers_config_rspec.rb +6 -0
  56. data/templates/smtp.rb +9 -0
  57. data/templates/spec_helper.rb +23 -0
  58. data/templates/staging.rb +9 -0
  59. data/templates/suspenders_gitignore +13 -0
  60. metadata +167 -0
@@ -0,0 +1,129 @@
1
+ # Initiate [![Build Status](https://travis-ci.org/infinum/initiate.svg)](https://travis-ci.org/infinum/initiate)
2
+
3
+ Initiate is the base Rails application used at
4
+ [Infinum](https://infinum.co). It's a fork of [Suspenders](https://github.com/thoughtbot/suspenders) by [Thoughtbot](thoughtbot.com). Thnx Thoughtbot!
5
+
6
+
7
+ ## Installation
8
+
9
+ First install the initiate gem:
10
+
11
+ gem install initiate
12
+
13
+ Then run:
14
+
15
+ initiate projectname
16
+
17
+ This will create a Rails app in `projectname` using the latest version of Rails.
18
+
19
+ ## Gemfile
20
+
21
+ To see the latest and greatest gems, look at Initiate'
22
+ [Gemfile](templates/Gemfile.erb), which will be appended to the default
23
+ generated projectname/Gemfile.
24
+
25
+ It includes application gems like:
26
+
27
+ * [Bugsnag](https://github.com/bugsnag/bugsnag-ruby) for exception notification
28
+ * [Delayed Job](https://github.com/collectiveidea/delayed_job) for background
29
+ processing
30
+ * [Flutie](https://github.com/thoughtbot/flutie) for `page_title` and `body_class` view
31
+ helpers
32
+ * [Postgres](https://github.com/ged/ruby-pg) for access to the Postgres database
33
+ * [Recipient Interceptor](https://github.com/croaky/recipient_interceptor) to
34
+ avoid accidentally sending emails to real people from staging
35
+ * [Simple Form](https://github.com/plataformatec/simple_form) for form markup
36
+ and style
37
+ * [Title](https://github.com/calebthompson/title) for storing titles in
38
+ translations
39
+
40
+ And development gems like:
41
+
42
+ * [Dotenv](https://github.com/bkeepers/dotenv) for loading environment variables
43
+ * [Pry Rails](https://github.com/rweng/pry-rails) for interactively exploring
44
+ objects
45
+ * [ByeBug](https://github.com/deivid-rodriguez/byebug) for interactively
46
+ debugging behavior
47
+ * [Bundler Audit](https://github.com/rubysec/bundler-audit) for scanning the
48
+ Gemfile for insecure dependencies based on published CVEs
49
+ * [Spring](https://github.com/rails/spring) for fast Rails actions via
50
+ pre-loading
51
+ * [Better errors](https://github.com/charliesome/better_errors) for better debugging via
52
+ in-browser IRB consoles.
53
+ * [Quiet Assets](https://github.com/evrone/quiet_assets) for muting assets
54
+ pipeline log messages
55
+
56
+ And testing gems like:
57
+
58
+ * [Capybara](https://github.com/jnicklas/capybara) and
59
+ [Capybara Webkit](https://github.com/thoughtbot/capybara-webkit) for
60
+ integration testing
61
+ * [Factory Girl](https://github.com/thoughtbot/factory_girl) for test data
62
+ * [Formulaic](https://github.com/thoughtbot/formulaic) for integration testing
63
+ HTML forms
64
+ * [RSpec](https://github.com/rspec/rspec) for unit testing
65
+ * [RSpec Mocks](https://github.com/rspec/rspec-mocks) for stubbing and spying
66
+ * [Shoulda Matchers](https://github.com/thoughtbot/shoulda-matchers) for common
67
+ RSpec matchers
68
+ * [Timecop](https://github.com/jtrupiano/timecop-console) for testing time
69
+
70
+ ## Other goodies
71
+
72
+ Initiate also comes with:
73
+
74
+ * The [`./bin/setup`][setup] convention for new developer setup
75
+ * Rails' flashes set up and in application layout
76
+ * A few nice time formats set up for localization
77
+ * `Rack::Deflater` to [compress responses with Gzip][compress]
78
+ * [Safe binstubs][binstub]
79
+ * [t() and l() in specs without prefixing with I18n][i18n]
80
+ * An automatically-created `SECRET_KEY_BASE` environment variable in all
81
+ environments
82
+
83
+ ## Spring
84
+
85
+ Initiate uses [spring](https://github.com/rails/spring) by default.
86
+ It makes Rails applications load faster, but it might introduce confusing issues
87
+ around stale code not being refreshed.
88
+ If you think your application is running old code, run `spring stop`.
89
+ And if you'd rather not use spring, add `DISABLE_SPRING=1` to your login file.
90
+
91
+ ## Dependencies
92
+
93
+ Initiate requires the latest version of Ruby.
94
+
95
+ Some gems included in Initiate have native extensions. You should have GCC
96
+ installed on your machine before generating an app with Initiate.
97
+
98
+ Use [OS X GCC Installer](https://github.com/kennethreitz/osx-gcc-installer/) for
99
+ Snow Leopard (OS X 10.6).
100
+
101
+ Use [Command Line Tools for XCode](https://developer.apple.com/downloads/index.action)
102
+ for Lion (OS X 10.7) or Mountain Lion (OS X 10.8).
103
+
104
+ We use [Capybara Webkit](https://github.com/thoughtbot/capybara-webkit) for
105
+ full-stack JavaScript integration testing. It requires QT. Instructions for
106
+ installing QT are
107
+ [here](https://github.com/thoughtbot/capybara-webkit/wiki/Installing-Qt-and-compiling-capybara-webkit).
108
+
109
+ PostgreSQL needs to be installed and running for the `db:create` rake task.
110
+
111
+ ## Issues
112
+
113
+ If you have problems, please create a
114
+ [GitHub Issue](https://github.com/infinum/initiate/issues).
115
+
116
+ ## Contributing
117
+
118
+ See [CONTRIBUTING.md](CONTRIBUTING.md).
119
+
120
+ Thank you, [contributors]!
121
+
122
+ [contributors]: https://github.com/infinum/initiate/graphs/contributors
123
+
124
+ ## License
125
+
126
+ Initiate is Copyright © 2015 Infinum.
127
+ It is free software, and may be redistributed under the terms specified in the [LICENSE] file.
128
+
129
+ [LICENSE]: LICENSE
@@ -0,0 +1,8 @@
1
+ require 'bundler/setup'
2
+ require 'bundler/gem_tasks'
3
+ require 'rspec/core/rake_task'
4
+
5
+ RSpec::Core::RakeTask.new(:rspec)
6
+
7
+ desc 'Run the test suite'
8
+ task :default => :rspec
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+ require 'pathname'
3
+
4
+ source_path = (Pathname.new(__FILE__).dirname + '../lib').expand_path
5
+ $LOAD_PATH << source_path
6
+
7
+ require 'initiate'
8
+
9
+ if ['-v', '--version'].include? ARGV[0]
10
+ puts Initiate::VERSION
11
+ exit 0
12
+ end
13
+
14
+ templates_root = File.expand_path(File.join("..", "templates"), File.dirname(__FILE__))
15
+ Initiate::AppGenerator.source_root templates_root
16
+ Initiate::AppGenerator.source_paths << Rails::Generators::AppGenerator.source_root << templates_root
17
+
18
+ Initiate::AppGenerator.start
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'rake' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('rake', 'rake')
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'rspec' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('rspec-core', 'rspec')
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env sh
2
+
3
+ # Run this script immediately after cloning the codebase.
4
+
5
+ # Exit if any subcommand fails
6
+ set -e
7
+
8
+ # Set up Ruby dependencies via Bundler
9
+ bundle install
10
+
11
+ # Add binstubs to PATH in ~/.zshenv like this:
12
+ # export PATH=".git/safe/../../bin:$PATH"
13
+ mkdir -p .git/safe
@@ -0,0 +1,6 @@
1
+ require 'rails'
2
+ require 'initiate/version'
3
+ require 'initiate/config'
4
+ require 'initiate/generators/app_generator'
5
+ require 'initiate/actions'
6
+ require 'initiate/app_builder'
@@ -0,0 +1,33 @@
1
+ module Initiate
2
+ module Actions
3
+ def replace_in_file(relative_path, find, replace)
4
+ path = File.join(destination_root, relative_path)
5
+ contents = IO.read(path)
6
+ unless contents.gsub!(find, replace)
7
+ raise "#{find.inspect} not found in #{relative_path}"
8
+ end
9
+ File.open(path, "w") { |file| file.write(contents) }
10
+ end
11
+
12
+ def action_mailer_host(rails_env, host)
13
+ config = "config.action_mailer.default_url_options = { host: #{host} }"
14
+ configure_environment(rails_env, config)
15
+ end
16
+
17
+ def configure_application_file(config)
18
+ inject_into_file(
19
+ "config/application.rb",
20
+ "\n\n #{config}",
21
+ before: "\n end"
22
+ )
23
+ end
24
+
25
+ def configure_environment(rails_env, config)
26
+ inject_into_file(
27
+ "config/environments/#{rails_env}.rb",
28
+ "\n\n #{config}",
29
+ before: "\nend"
30
+ )
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,341 @@
1
+ module Initiate
2
+ class AppBuilder < Rails::AppBuilder
3
+ include Initiate::Actions
4
+
5
+ def readme
6
+ template 'README.md.erb', 'README.md'
7
+ end
8
+
9
+ def generate_bugsnag
10
+ copy_file 'bugsnag.rb', 'config/initializers/bugsnag.rb'
11
+ end
12
+
13
+ def setup_development_mailer
14
+ replace_in_file 'config/environments/development.rb',
15
+ ' config.action_mailer.raise_delivery_errors = false', mailer_configuration
16
+ end
17
+
18
+ def mailer_configuration
19
+ <<-RUBY
20
+ config.action_mailer.raise_delivery_errors = true
21
+ config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
22
+ config.action_mailer.delivery_method = :letter_opener
23
+ config.action_mailer.preview_path = "\#{Rails.root}/lib/mailer_previews"
24
+ RUBY
25
+ end
26
+
27
+ def raise_on_unpermitted_parameters
28
+ config = <<-RUBY
29
+ config.action_controller.action_on_unpermitted_parameters = :raise
30
+ RUBY
31
+
32
+ inject_into_class "config/application.rb", "Application", config
33
+ end
34
+
35
+ def configure_quiet_assets
36
+ config = <<-RUBY
37
+ config.quiet_assets = true
38
+ RUBY
39
+
40
+ inject_into_class "config/application.rb", "Application", config
41
+ end
42
+
43
+ def provide_setup_script
44
+ template "bin_setup.erb", "bin/setup", force: true
45
+ run "chmod a+x bin/setup"
46
+ end
47
+
48
+ def provide_dev_prime_task
49
+ copy_file 'dev.rake', 'lib/tasks/dev.rake'
50
+ end
51
+
52
+ def configure_generators
53
+ config = <<-RUBY
54
+
55
+ config.generators do |generate|
56
+ generate.helper false
57
+ generate.javascript_engine false
58
+ generate.request_specs false
59
+ generate.routing_specs false
60
+ generate.stylesheets false
61
+ generate.test_framework :rspec
62
+ generate.view_specs false
63
+ end
64
+
65
+ RUBY
66
+
67
+ inject_into_class 'config/application.rb', 'Application', config
68
+ end
69
+
70
+ def set_up_factory_girl_for_rspec
71
+ copy_file 'factory_girl_rspec.rb', 'spec/support/factory_girl.rb'
72
+ end
73
+
74
+ def generate_factories_file
75
+ copy_file "factories.rb", "spec/factories.rb"
76
+ end
77
+
78
+ def configure_smtp
79
+ copy_file 'smtp.rb', 'config/smtp.rb'
80
+
81
+ prepend_file 'config/environments/production.rb',
82
+ %{require Rails.root.join("config/smtp")\n}
83
+
84
+ config = <<-RUBY
85
+
86
+ config.action_mailer.delivery_method = :smtp
87
+ config.action_mailer.smtp_settings = SMTP_SETTINGS
88
+ RUBY
89
+
90
+ inject_into_file 'config/environments/production.rb', config,
91
+ after: "config.action_mailer.raise_delivery_errors = false"
92
+ end
93
+
94
+ def enable_rack_deflater
95
+ config = <<-RUBY
96
+
97
+ # Enable deflate / gzip compression of controller-generated responses
98
+ config.middleware.use Rack::Deflater
99
+ RUBY
100
+
101
+ inject_into_file(
102
+ "config/environments/production.rb",
103
+ config,
104
+ after: serve_static_files_line
105
+ )
106
+ end
107
+
108
+ def setup_asset_host
109
+ replace_in_file 'config/environments/production.rb',
110
+ "# config.action_controller.asset_host = 'http://assets.example.com'",
111
+ 'config.action_controller.asset_host = ENV.fetch("ASSET_HOST", ENV.fetch("APPLICATION_HOST"))'
112
+
113
+ replace_in_file 'config/initializers/assets.rb',
114
+ "config.assets.version = '1.0'",
115
+ 'config.assets.version = (ENV["ASSETS_VERSION"] || "1.0")'
116
+
117
+ inject_into_file(
118
+ "config/environments/production.rb",
119
+ ' config.static_cache_control = "public, max-age=#{1.year.to_i}"',
120
+ after: serve_static_files_line
121
+ )
122
+ end
123
+
124
+ def setup_staging_environment
125
+ staging_file = 'config/environments/staging.rb'
126
+ copy_file 'staging.rb', staging_file
127
+ end
128
+
129
+ def setup_secret_token
130
+ template 'secrets.yml', 'config/secrets.yml', force: true
131
+ end
132
+
133
+ def disallow_wrapping_parameters
134
+ remove_file "config/initializers/wrap_parameters.rb"
135
+ end
136
+
137
+ def create_partials_directory
138
+ empty_directory 'app/views/application'
139
+ end
140
+
141
+ def create_shared_flashes
142
+ copy_file "_flashes.html.erb", "app/views/application/_flashes.html.erb"
143
+ copy_file "flashes_helper.rb", "app/helpers/flashes_helper.rb"
144
+ end
145
+
146
+ def create_shared_javascripts
147
+ copy_file '_javascript.html.erb', 'app/views/application/_javascript.html.erb'
148
+ end
149
+
150
+ def create_application_layout
151
+ remove_file "app/views/layouts/application.html.erb"
152
+ template 'application.html.slim.erb',
153
+ 'app/views/layouts/application.html.slim'
154
+ end
155
+
156
+ def use_postgres_config_template
157
+ template 'postgresql_database.yml.erb', 'config/database.yml',
158
+ force: true
159
+ end
160
+
161
+ def create_database
162
+ bundle_command 'exec rake db:create db:migrate'
163
+ end
164
+
165
+ def replace_gemfile
166
+ remove_file 'Gemfile'
167
+ template 'Gemfile.erb', 'Gemfile'
168
+ end
169
+
170
+ def set_ruby_to_version_being_used
171
+ create_file '.ruby-version', "#{Initiate::RUBY_VERSION}\n"
172
+ end
173
+
174
+ def enable_database_cleaner
175
+ copy_file 'database_cleaner_rspec.rb', 'spec/support/database_cleaner.rb'
176
+ end
177
+
178
+ def provide_shoulda_matchers_config
179
+ copy_file(
180
+ "shoulda_matchers_config_rspec.rb",
181
+ "spec/support/shoulda_matchers.rb"
182
+ )
183
+ end
184
+
185
+ def configure_spec_support_features
186
+ empty_directory_with_keep_file 'spec/features'
187
+ empty_directory_with_keep_file 'spec/support/features'
188
+ end
189
+
190
+ def configure_rspec
191
+ remove_file "spec/rails_helper.rb"
192
+ remove_file "spec/spec_helper.rb"
193
+ copy_file "rails_helper.rb", "spec/rails_helper.rb"
194
+ copy_file "spec_helper.rb", "spec/spec_helper.rb"
195
+ end
196
+
197
+ def configure_i18n_for_test_environment
198
+ copy_file "i18n.rb", "spec/support/i18n.rb"
199
+ end
200
+
201
+ def configure_i18n_for_missing_translations
202
+ raise_on_missing_translations_in("development")
203
+ raise_on_missing_translations_in("test")
204
+ end
205
+
206
+ def configure_i18n_tasks
207
+ run "cp $(i18n-tasks gem-path)/templates/rspec/i18n_spec.rb spec/"
208
+ copy_file "config_i18n_tasks.yml", "config/i18n-tasks.yml"
209
+ end
210
+
211
+ def configure_background_jobs_for_rspec
212
+ run 'rails g delayed_job:active_record'
213
+ end
214
+
215
+ def configure_action_mailer_in_specs
216
+ copy_file 'action_mailer.rb', 'spec/support/action_mailer.rb'
217
+ end
218
+
219
+ def configure_capybara_webkit
220
+ copy_file "capybara_webkit.rb", "spec/support/capybara_webkit.rb"
221
+ end
222
+
223
+ def configure_time_formats
224
+ remove_file "config/locales/en.yml"
225
+ template "config_locales_en.yml.erb", "config/locales/en.yml"
226
+ end
227
+
228
+ def configure_simple_form
229
+ bundle_command "exec rails generate simple_form:install"
230
+ end
231
+
232
+ def configure_action_mailer
233
+ action_mailer_host "development", %{"localhost:3000"}
234
+ action_mailer_host "test", %{"www.example.com"}
235
+ action_mailer_host "production", %{ENV.fetch("APPLICATION_HOST")}
236
+ end
237
+
238
+ def configure_active_job
239
+ configure_application_file(
240
+ "config.active_job.queue_adapter = :delayed_job"
241
+ )
242
+ configure_environment "test", "config.active_job.queue_adapter = :inline"
243
+ end
244
+
245
+ def fix_i18n_deprecation_warning
246
+ config = <<-RUBY
247
+ config.i18n.enforce_available_locales = true
248
+ RUBY
249
+
250
+ inject_into_class 'config/application.rb', 'Application', config
251
+ end
252
+
253
+ def generate_rspec
254
+ generate 'rspec:install'
255
+ end
256
+
257
+ def setup_stylesheets
258
+ remove_file "app/assets/stylesheets/application.css"
259
+ copy_file "application.scss",
260
+ "app/assets/stylesheets/application.scss"
261
+ end
262
+
263
+ def gitignore_files
264
+ %w(.sass-cache powder public/system dump.rdb logfile .DS_Store).each do |gitignored|
265
+ append_file ".gitignore", gitignored
266
+ end
267
+ end
268
+
269
+ def init_git
270
+ run 'git init'
271
+ end
272
+
273
+ def provide_deploy_script
274
+ copy_file "deploy.rb", "config/deploy.rb"
275
+ end
276
+
277
+ def setup_bundler_audit
278
+ copy_file "bundler_audit.rake", "lib/tasks/bundler_audit.rake"
279
+ append_file "Rakefile", %{\ntask default: "bundler:audit"\n}
280
+ end
281
+
282
+ def setup_annotate
283
+ copy_file 'annotate.rake', 'lib/tasks/annotate.rake'
284
+ end
285
+
286
+ def setup_spring
287
+ bundle_command "exec spring binstub --all"
288
+ end
289
+
290
+ def copy_miscellaneous_files
291
+ copy_file "browserslist", "browserslist"
292
+ copy_file "errors.rb", "config/initializers/errors.rb"
293
+ copy_file "json_encoding.rb", "config/initializers/json_encoding.rb"
294
+ end
295
+
296
+ def remove_routes_comment_lines
297
+ replace_in_file 'config/routes.rb',
298
+ /Rails\.application\.routes\.draw do.*end/m,
299
+ "Rails.application.routes.draw do\nend"
300
+ end
301
+
302
+ def disable_xml_params
303
+ copy_file 'disable_xml_params.rb', 'config/initializers/disable_xml_params.rb'
304
+ end
305
+
306
+ def setup_default_rake_task
307
+ append_file 'Rakefile' do
308
+ <<-EOS
309
+ task(:default).clear
310
+ task default: [:spec]
311
+
312
+ if defined? RSpec
313
+ task(:spec).clear
314
+ RSpec::Core::RakeTask.new(:spec) do |t|
315
+ t.verbose = false
316
+ end
317
+ end
318
+ EOS
319
+ end
320
+ end
321
+
322
+ private
323
+
324
+ def raise_on_missing_translations_in(environment)
325
+ config = 'config.action_view.raise_on_missing_translations = true'
326
+
327
+ uncomment_lines("config/environments/#{environment}.rb", config)
328
+ end
329
+
330
+ def override_path_for_tests
331
+ if ENV['TESTING']
332
+ support_bin = File.expand_path(File.join('..', '..', 'spec', 'fakes', 'bin'))
333
+ "PATH=#{support_bin}:$PATH"
334
+ end
335
+ end
336
+
337
+ def serve_static_files_line
338
+ "config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?\n"
339
+ end
340
+ end
341
+ end