aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
authorGabe Kopley <gabe@coshx.com>2013-03-24 22:31:48 -0700
committerGabe Kopley <gabe@coshx.com>2013-03-24 22:31:48 -0700
commit940da7d9cbb39bc9589031df62e26edfc0c1f8bc (patch)
tree115783cb882b76bae9d8f5909cf545fb207b0074 /railties
parent592b4b40c285419e3074da99f82e0da40f29e6d0 (diff)
downloadrails-940da7d9cbb39bc9589031df62e26edfc0c1f8bc.tar.gz
rails-940da7d9cbb39bc9589031df62e26edfc0c1f8bc.tar.bz2
rails-940da7d9cbb39bc9589031df62e26edfc0c1f8bc.zip
Put coffee-rails in top-level of generated Gemfile
v3 of pull request based on additional feedback from @jeremy
Diffstat (limited to 'railties')
-rw-r--r--railties/CHANGELOG.md12
-rw-r--r--railties/lib/rails/generators/app_base.rb42
-rw-r--r--railties/test/generators/app_generator_test.rb5
3 files changed, 43 insertions, 16 deletions
diff --git a/railties/CHANGELOG.md b/railties/CHANGELOG.md
index fb030dab4a..2727f1a85d 100644
--- a/railties/CHANGELOG.md
+++ b/railties/CHANGELOG.md
@@ -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*
diff --git a/railties/lib/rails/generators/app_base.rb b/railties/lib/rails/generators/app_base.rb
index ef39a4b6a8..4e05c32f74 100644
--- a/railties/lib/rails/generators/app_base.rb
+++ b/railties/lib/rails/generators/app_base.rb
@@ -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)
diff --git a/railties/test/generators/app_generator_test.rb b/railties/test/generators/app_generator_test.rb
index 0697035871..0daea2fd0a 100644
--- a/railties/test/generators/app_generator_test.rb
+++ b/railties/test/generators/app_generator_test.rb
@@ -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