diff options
author | José Valim <jose.valim@gmail.com> | 2011-10-02 12:14:31 +0200 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2011-10-02 12:15:21 +0200 |
commit | 753424079e497d8ab7bc611093a34194200e3c7c (patch) | |
tree | 120e1b753e24a52d326829c55de6d40bf7937281 /railties | |
parent | 1efe41dc366d21123842dea34ba95ddf1ab284d4 (diff) | |
download | rails-753424079e497d8ab7bc611093a34194200e3c7c.tar.gz rails-753424079e497d8ab7bc611093a34194200e3c7c.tar.bz2 rails-753424079e497d8ab7bc611093a34194200e3c7c.zip |
Provide initialize_on_precompile which, when set to false, does not initialize the app for precompilation. Defaults to true.
Diffstat (limited to 'railties')
-rw-r--r-- | railties/CHANGELOG | 3 | ||||
-rw-r--r-- | railties/lib/rails/application/configuration.rb | 27 | ||||
-rw-r--r-- | railties/test/application/assets_test.rb | 23 |
3 files changed, 39 insertions, 14 deletions
diff --git a/railties/CHANGELOG b/railties/CHANGELOG index 160ea0f600..187dd2428f 100644 --- a/railties/CHANGELOG +++ b/railties/CHANGELOG @@ -17,7 +17,8 @@ * Add jquery-rails to Gemfile of plugins, test/dummy app needs it. Closes #3091. [Santiago Pastorino] -* `rake assets:precompile` loads the application but does not initialize it. +* Add config.assets.initialize_on_precompile which, when set to false, forces + `rake assets:precompile` to load the application but does not initialize it. To the app developer, this means configuration add in config/initializers/* will not be executed. diff --git a/railties/lib/rails/application/configuration.rb b/railties/lib/rails/application/configuration.rb index c363e53c10..448521d2f0 100644 --- a/railties/lib/rails/application/configuration.rb +++ b/railties/lib/rails/application/configuration.rb @@ -37,19 +37,20 @@ module Rails @cache_store = [ :file_store, "#{root}/tmp/cache/" ] @assets = ActiveSupport::OrderedOptions.new - @assets.enabled = false - @assets.paths = [] - @assets.precompile = [ Proc.new{ |path| !File.extname(path).in?(['.js', '.css']) }, - /(?:\/|\\|\A)application\.(css|js)$/ ] - @assets.prefix = "/assets" - @assets.version = '' - @assets.debug = false - @assets.compile = true - @assets.digest = false - @assets.manifest = nil - @assets.cache_store = [ :file_store, "#{root}/tmp/cache/assets/" ] - @assets.js_compressor = nil - @assets.css_compressor = nil + @assets.enabled = false + @assets.paths = [] + @assets.precompile = [ Proc.new{ |path| !File.extname(path).in?(['.js', '.css']) }, + /(?:\/|\\|\A)application\.(css|js)$/ ] + @assets.prefix = "/assets" + @assets.version = '' + @assets.debug = false + @assets.compile = true + @assets.digest = false + @assets.manifest = nil + @assets.cache_store = [ :file_store, "#{root}/tmp/cache/assets/" ] + @assets.js_compressor = nil + @assets.css_compressor = nil + @assets.initialize_on_precompile = true end def compiled_asset_path diff --git a/railties/test/application/assets_test.rb b/railties/test/application/assets_test.rb index 118ffff44b..7bace25fef 100644 --- a/railties/test/application/assets_test.rb +++ b/railties/test/application/assets_test.rb @@ -395,7 +395,30 @@ module ApplicationTests assert_match(/<script src="\/assets\/xmlhr-([0-z]+)\.js\?body=1" type="text\/javascript"><\/script>/, last_response.body) end + test "assets can access model information when precompiling" do + app_file "app/models/post.rb", "class Post; end" + app_file "app/assets/javascripts/application.js", "//= require_tree ." + app_file "app/assets/javascripts/xmlhr.js.erb", "<%= Post.name %>" + + add_to_config "config.assets.digest = false" + precompile! + assert_equal "Post;\n", File.read("#{app_path}/public/assets/application.js") + end + + test "assets can't access model information when precompiling if not initializing the app" do + app_file "app/models/post.rb", "class Post; end" + app_file "app/assets/javascripts/application.js", "//= require_tree ." + app_file "app/assets/javascripts/xmlhr.js.erb", "<%= defined?(Post) || :NoPost %>" + + add_to_config "config.assets.digest = false" + add_to_config "config.assets.initialize_on_precompile = false" + + precompile! + assert_equal "NoPost;\n", File.read("#{app_path}/public/assets/application.js") + end + private + def app_with_assets_in_view app_file "app/assets/javascripts/application.js", "//= require_tree ." app_file "app/assets/javascripts/xmlhr.js", "function f1() { alert(); }" |