提交 940da7d9 编写于 作者: G Gabe Kopley

Put coffee-rails in top-level of generated Gemfile

v3 of pull request based on additional feedback from @jeremy
上级 592b4b40
## 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 @@ def assets_gemfile_entry
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 @@ def assets_gemfile_entry
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 @@ def javascript_gemfile_entry
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 @@ def test_generator_if_skip_sprockets_is_given
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 @@ def test_javascript_is_skipped_if_required
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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册