diff --git a/Gemfile b/Gemfile index 95718d67aef4c..6a1bba85ef8b3 100644 --- a/Gemfile +++ b/Gemfile @@ -20,7 +20,7 @@ gem 'turbolinks' gem 'arel', github: 'rails/arel', branch: 'master' gem 'mail', github: 'mikel/mail' -gem 'sprockets', '~> 3.0.0.rc.1' +gem 'sprockets', github: 'rails/sprockets', branch: 'master' gem 'sprockets-rails', github: 'rails/sprockets-rails', branch: 'master' # require: false so bcrypt is loaded only when has_secure_password is used. @@ -31,6 +31,7 @@ gem 'bcrypt', '~> 3.1.10', require: false # This needs to be with require false to avoid # it being automatically loaded by sprockets gem 'uglifier', '>= 1.3.0', require: false +gem 'sass', '>= 3.3', require: false group :doc do gem 'sdoc', '~> 0.4.0' diff --git a/Gemfile.lock b/Gemfile.lock index 52e221c6fc5d9..dc355dda3e1bf 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -59,6 +59,14 @@ GIT activesupport (>= 4.0) sprockets (>= 3.0.0) +GIT + remote: git://github.com/rails/sprockets.git + revision: de057b4f13deb2bb5e8684cd06b9b687f5d09792 + branch: master + specs: + sprockets (4.0.0) + rack (~> 1.0) + PATH remote: . specs: @@ -215,6 +223,7 @@ GEM resque (~> 1.25) rufus-scheduler (~> 3.0) rufus-scheduler (3.1.3) + sass (3.4.16) sdoc (0.4.1) json (~> 1.7, >= 1.7.7) rdoc (~> 4.0) @@ -237,8 +246,6 @@ GEM serverengine (~> 1.5.5) thor thread (~> 0.1.7) - sprockets (3.0.3) - rack (~> 1.0) sqlite3 (1.3.10) stackprof (0.2.7) sucker_punch (1.5.0) @@ -303,11 +310,12 @@ DEPENDENCIES redcarpet (~> 3.2.3) resque resque-scheduler + sass (>= 3.3) sdoc (~> 0.4.0) sequel sidekiq sneakers - sprockets (~> 3.0.0.rc.1) + sprockets! sprockets-rails! sqlite3 (~> 1.3.6) stackprof diff --git a/railties/lib/rails/generators/app_base.rb b/railties/lib/rails/generators/app_base.rb index 249fe96772e40..a5fdfdcf2fe53 100644 --- a/railties/lib/rails/generators/app_base.rb +++ b/railties/lib/rails/generators/app_base.rb @@ -209,12 +209,16 @@ def rails_gemfile_entry [ GemfileEntry.path('rails', Rails::Generators::RAILS_DEV_PATH), GemfileEntry.github('sprockets-rails', 'rails/sprockets-rails'), + GemfileEntry.github('sprockets', 'rails/sprockets'), + GemfileEntry.github('sass-rails', 'rails/sass-rails'), GemfileEntry.github('arel', 'rails/arel') ] elsif options.edge? [ GemfileEntry.github('rails', 'rails/rails'), GemfileEntry.github('sprockets-rails', 'rails/sprockets-rails'), + GemfileEntry.github('sprockets', 'rails/sprockets'), + GemfileEntry.github('sass-rails', 'rails/sass-rails'), GemfileEntry.github('arel', 'rails/arel') ] else @@ -255,8 +259,6 @@ def assets_gemfile_entry return [] if options[:skip_sprockets] gems = [] - gems << GemfileEntry.version('sass-rails', '~> 5.0', - 'Use SCSS for stylesheets') gems << GemfileEntry.version('uglifier', '>= 1.3.0', diff --git a/railties/lib/rails/generators/rails/app/templates/app/assets/manifest.js b/railties/lib/rails/generators/rails/app/templates/app/assets/manifest.js new file mode 100644 index 0000000000000..003706715a7fe --- /dev/null +++ b/railties/lib/rails/generators/rails/app/templates/app/assets/manifest.js @@ -0,0 +1,4 @@ + +//= link_tree ./images +//= link javascripts/application.js +//= link stylesheets/application.css diff --git a/railties/lib/rails/generators/rails/plugin/plugin_generator.rb b/railties/lib/rails/generators/rails/plugin/plugin_generator.rb index 0e1326ce4fb50..e4ef2063e9fe6 100644 --- a/railties/lib/rails/generators/rails/plugin/plugin_generator.rb +++ b/railties/lib/rails/generators/rails/plugin/plugin_generator.rb @@ -104,8 +104,9 @@ def test_dummy_config end def test_dummy_assets - template "rails/javascripts.js", "#{dummy_path}/app/assets/javascripts/application.js", force: true - template "rails/stylesheets.css", "#{dummy_path}/app/assets/stylesheets/application.css", force: true + template "rails/javascripts.js", "#{dummy_path}/app/assets/javascripts/application.js", force: true + template "rails/stylesheets.css", "#{dummy_path}/app/assets/stylesheets/application.css", force: true + template "rails/dummy_manifest.js", "#{dummy_path}/app/assets/manifest.js", force: true end def test_dummy_clean @@ -122,6 +123,10 @@ def test_dummy_clean end end + def assets_manifest + template "rails/engine_manifest.js", "app/assets/#{namespaced_name}_manifest.js" + end + def stylesheets if mountable? copy_file "rails/stylesheets.css", @@ -220,6 +225,10 @@ def create_lib_files build(:lib) end + def create_assets_manifest_file + build(:assets_manifest) unless api? + end + def create_public_stylesheets_files build(:stylesheets) unless api? end diff --git a/railties/lib/rails/generators/rails/plugin/templates/rails/dummy_manifest.js b/railties/lib/rails/generators/rails/plugin/templates/rails/dummy_manifest.js new file mode 100644 index 0000000000000..dca57d7c5c26d --- /dev/null +++ b/railties/lib/rails/generators/rails/plugin/templates/rails/dummy_manifest.js @@ -0,0 +1,7 @@ +<% unless options.skip_javascript -%> +// link application.js +<% end -%> +//= link application.css +<% if mountable? -%> +//= link <%= namespaced_name %>_manifest.js +<% end -%> diff --git a/railties/lib/rails/generators/rails/plugin/templates/rails/engine_manifest.js b/railties/lib/rails/generators/rails/plugin/templates/rails/engine_manifest.js new file mode 100644 index 0000000000000..a57d9ebcedc19 --- /dev/null +++ b/railties/lib/rails/generators/rails/plugin/templates/rails/engine_manifest.js @@ -0,0 +1,6 @@ +<% if mountable? -%> +<% unless options.skip_javascript -%> +//= link <%= namespaced_name %>/application.js +<% end -%> +//= link <%= namespaced_name %>/application.css +<% end -%> diff --git a/railties/test/application/asset_debugging_test.rb b/railties/test/application/asset_debugging_test.rb index 36ab8109a7241..fef65adda2efc 100644 --- a/railties/test/application/asset_debugging_test.rb +++ b/railties/test/application/asset_debugging_test.rb @@ -48,7 +48,7 @@ class ::PostsController < ActionController::Base ; end assert_no_match(/