aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuillermo Iguaran <guilleiguaran@gmail.com>2011-08-30 16:30:53 -0500
committerGuillermo Iguaran <guilleiguaran@gmail.com>2011-08-31 13:12:25 -0500
commitd0b3937b8fe2cbc4385e843d47249af3e7181a83 (patch)
treeed3223e40c61d9003008d56a12de414153b425a0
parentf236e00189b5a6cf0cebac5c275f64d41d73428d (diff)
downloadrails-d0b3937b8fe2cbc4385e843d47249af3e7181a83.tar.gz
rails-d0b3937b8fe2cbc4385e843d47249af3e7181a83.tar.bz2
rails-d0b3937b8fe2cbc4385e843d47249af3e7181a83.zip
Set default location of manifest with config.assets.manifest
-rw-r--r--actionpack/lib/sprockets/assets.rake3
-rw-r--r--actionpack/lib/sprockets/railtie.rb8
-rw-r--r--railties/lib/rails/application/configuration.rb1
-rw-r--r--railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt3
-rw-r--r--railties/test/application/assets_test.rb17
5 files changed, 30 insertions, 2 deletions
diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake
index 54907abb39..6f38ece0c3 100644
--- a/actionpack/lib/sprockets/assets.rake
+++ b/actionpack/lib/sprockets/assets.rake
@@ -21,6 +21,7 @@ namespace :assets do
env = Rails.application.assets
target = Pathname.new(File.join(Rails.public_path, config.assets.prefix))
manifest = {}
+ manifest_path = config.assets.manifest || target
if env.respond_to?(:each_logical_path)
config.assets.precompile.each do |path|
@@ -47,7 +48,7 @@ namespace :assets do
env.precompile(*assets)
end
- File.open("#{target}/manifest.yml", 'w') do |f|
+ File.open("#{manifest_path}/manifest.yml", 'w') do |f|
YAML.dump(manifest, f)
end
end
diff --git a/actionpack/lib/sprockets/railtie.rb b/actionpack/lib/sprockets/railtie.rb
index 4adfd000f8..7927b7bc2c 100644
--- a/actionpack/lib/sprockets/railtie.rb
+++ b/actionpack/lib/sprockets/railtie.rb
@@ -26,7 +26,13 @@ module Sprockets
end
end
- if File.exist?(path = File.join(Rails.public_path, config.assets.prefix, "manifest.yml"))
+ if config.assets.manifest
+ path = File.join(config.assets.manifest, "manifest.yml")
+ else
+ path = File.join(Rails.public_path, config.assets.prefix, "manifest.yml")
+ end
+
+ if File.exist?(path)
config.assets.digests = YAML.load_file(path)
end
diff --git a/railties/lib/rails/application/configuration.rb b/railties/lib/rails/application/configuration.rb
index 85e0cd5061..fa7e3b820b 100644
--- a/railties/lib/rails/application/configuration.rb
+++ b/railties/lib/rails/application/configuration.rb
@@ -43,6 +43,7 @@ module Rails
@assets.debug = false
@assets.compile = true
@assets.digest = false
+ @assets.manifest = "#{root}/public#{@assets.prefix}"
@assets.cache_store = [ :file_store, "#{root}/tmp/cache/assets/" ]
@assets.js_compressor = nil
@assets.css_compressor = nil
diff --git a/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt b/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt
index b4754cfc6d..64e2c09467 100644
--- a/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt
+++ b/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt
@@ -20,6 +20,9 @@
# Generate digests for assets URLs
config.assets.digest = true
+ # Defaults to Rails.root.join("public/assets")
+ # config.assets.manifest = YOUR_PATH
+
# Specifies the header that your server uses for sending files
# config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
diff --git a/railties/test/application/assets_test.rb b/railties/test/application/assets_test.rb
index a4d7fc92f5..ccadf0b2c0 100644
--- a/railties/test/application/assets_test.rb
+++ b/railties/test/application/assets_test.rb
@@ -79,6 +79,23 @@ module ApplicationTests
assert_match /application-([0-z]+)\.css/, assets["application.css"]
end
+ test "precompile creates a manifest file in a custom path with all the assets listed" do
+ app_file "app/assets/stylesheets/application.css.erb", "<%= asset_path('rails.png') %>"
+ app_file "app/assets/javascripts/application.js", "alert();"
+ FileUtils.mkdir "#{app_path}/shared"
+ app_file "config/initializers/manifest.rb", "Rails.application.config.assets.manifest = '#{app_path}/shared'"
+
+ capture(:stdout) do
+ Dir.chdir(app_path){ `bundle exec rake assets:precompile` }
+ end
+
+ manifest = "#{app_path}/shared/manifest.yml"
+
+ assets = YAML.load_file(manifest)
+ assert_match /application-([0-z]+)\.js/, assets["application.js"]
+ assert_match /application-([0-z]+)\.css/, assets["application.css"]
+ end
+
test "assets do not require any assets group gem when manifest file is present" do
app_file "app/assets/javascripts/application.js", "alert();"