mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Put coffee-rails in top-level of generated Gemfile
v3 of pull request based on additional feedback from @jeremy
This commit is contained in:
parent
592b4b40c2
commit
940da7d9cb
3 changed files with 43 additions and 16 deletions
|
@ -1,5 +1,17 @@
|
|||
## Rails 4.0.0 (unreleased) ##
|
||||
|
||||
* Allow vanilla apps to render CoffeeScript templates in production
|
||||
|
||||
Vanilla apps already render CoffeeScript templates in development and test
|
||||
environments. With this change, the production behavior matches that of
|
||||
the other environments.
|
||||
|
||||
Effectively, this meant moving coffee-rails (and the JavaScript runtime on
|
||||
which it is dependent) from the :assets group to the top-level of the
|
||||
generated Gemfile.
|
||||
|
||||
*Gabe Kopley*
|
||||
|
||||
* `Rails.version` now returns an instance of `Gem::Version`
|
||||
|
||||
*Charlie Somerville*
|
||||
|
|
|
@ -178,29 +178,25 @@ module Rails
|
|||
return if options[:skip_sprockets]
|
||||
|
||||
gemfile = if options.dev? || options.edge?
|
||||
<<-GEMFILE
|
||||
<<-GEMFILE.gsub(/^ {12}/, '')
|
||||
# Gems used only for assets and not required
|
||||
# in production environments by default.
|
||||
group :assets do
|
||||
gem 'sprockets-rails', github: 'rails/sprockets-rails'
|
||||
gem 'sass-rails', github: 'rails/sass-rails'
|
||||
gem 'coffee-rails', github: 'rails/coffee-rails'
|
||||
|
||||
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
|
||||
#{javascript_runtime_gemfile_entry}
|
||||
#{coffee_gemfile_entry if options[:skip_javascript]}
|
||||
#{javascript_runtime_gemfile_entry(2) if options[:skip_javascript]}
|
||||
gem 'uglifier', '>= 1.0.3'
|
||||
end
|
||||
GEMFILE
|
||||
else
|
||||
<<-GEMFILE
|
||||
<<-GEMFILE.gsub(/^ {12}/, '')
|
||||
# Gems used only for assets and not required
|
||||
# in production environments by default.
|
||||
group :assets do
|
||||
gem 'sass-rails', '~> 4.0.0.beta1'
|
||||
gem 'coffee-rails', '~> 4.0.0.beta1'
|
||||
|
||||
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
|
||||
#{javascript_runtime_gemfile_entry}
|
||||
#{coffee_gemfile_entry if options[:skip_javascript]}
|
||||
#{javascript_runtime_gemfile_entry(2) if options[:skip_javascript]}
|
||||
gem 'uglifier', '>= 1.0.3'
|
||||
end
|
||||
GEMFILE
|
||||
|
@ -209,11 +205,23 @@ module Rails
|
|||
gemfile.strip_heredoc.gsub(/^[ \t]*$/, '')
|
||||
end
|
||||
|
||||
def coffee_gemfile_entry
|
||||
if options.dev? || options.edge?
|
||||
"gem 'coffee-rails', github: 'rails/coffee-rails'"
|
||||
else
|
||||
"gem 'coffee-rails', '~> 4.0.0.beta1'"
|
||||
end
|
||||
end
|
||||
|
||||
def javascript_gemfile_entry
|
||||
args = {'jquery' => ", github: 'rails/jquery-rails'"}
|
||||
|
||||
unless options[:skip_javascript]
|
||||
<<-GEMFILE.strip_heredoc
|
||||
<<-GEMFILE.gsub(/^ {12}/, '').strip_heredoc
|
||||
#{javascript_runtime_gemfile_entry}
|
||||
# Use CoffeeScript for .js.coffee assets and views
|
||||
#{coffee_gemfile_entry}
|
||||
|
||||
gem '#{options[:javascript]}-rails'#{args[options[:javascript]]}
|
||||
|
||||
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
|
||||
|
@ -222,12 +230,16 @@ module Rails
|
|||
end
|
||||
end
|
||||
|
||||
def javascript_runtime_gemfile_entry
|
||||
if defined?(JRUBY_VERSION)
|
||||
"gem 'therubyrhino'\n"
|
||||
def javascript_runtime_gemfile_entry(n_spaces=0)
|
||||
runtime = if defined?(JRUBY_VERSION)
|
||||
"gem 'therubyrhino'"
|
||||
else
|
||||
"# gem 'therubyracer', platforms: :ruby\n"
|
||||
"# gem 'therubyracer', platforms: :ruby"
|
||||
end
|
||||
<<-GEMFILE.gsub(/^ {10}/, '')
|
||||
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
|
||||
#{" "*n_spaces}#{runtime}
|
||||
GEMFILE
|
||||
end
|
||||
|
||||
def bundle_command(command)
|
||||
|
|
|
@ -232,8 +232,8 @@ class AppGeneratorTest < Rails::Generators::TestCase
|
|||
end
|
||||
assert_file "Gemfile" do |content|
|
||||
assert_no_match(/sass-rails/, content)
|
||||
assert_no_match(/coffee-rails/, content)
|
||||
assert_no_match(/uglifier/, content)
|
||||
assert_match(/coffee-rails/, content)
|
||||
end
|
||||
assert_file "config/environments/development.rb" do |content|
|
||||
assert_no_match(/config\.assets\.debug = true/, content)
|
||||
|
@ -293,6 +293,9 @@ class AppGeneratorTest < Rails::Generators::TestCase
|
|||
assert_file "app/assets/javascripts/application.js" do |contents|
|
||||
assert_no_match %r{^//=\s+require\s}, contents
|
||||
end
|
||||
assert_file "Gemfile" do |content|
|
||||
assert_match(/coffee-rails/, content)
|
||||
end
|
||||
end
|
||||
|
||||
def test_inclusion_of_debugger
|
||||
|
|
Loading…
Reference in a new issue