Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Avoid using pathnames and automatically create the manifest directory…

… if one does not exist yet.
  • Loading branch information...
commit 253c0bcb5431c5d10f7754737dfa5e341e0e95dd 1 parent 0a4b8fb
@josevalim josevalim authored
View
11 actionpack/lib/sprockets/assets.rake
@@ -8,10 +8,15 @@ namespace :assets do
ENV["RAILS_ENV"] ||= "production"
Kernel.exec $0, *ARGV
else
+ require "fileutils"
Rake::Task["tmp:cache:clear"].invoke
Rails.application.initialize!(:assets)
Sprockets::Bootstrap.new(Rails.application).run
+ unless Rails.application.config.assets.enabled
+ raise "Cannot precompile assets if sprockets is disabled. Please set config.assets.enabled to true"
+ end
+
# Ensure that action view is loaded and the appropriate sprockets hooks get executed
ActionView::Base
@@ -20,11 +25,13 @@ namespace :assets do
config = Rails.application.config
env = Rails.application.assets
- target = Pathname.new(File.join(Rails.public_path, config.assets.prefix))
- manifest_path = config.assets.manifest || target
+ target = File.join(Rails.public_path, config.assets.prefix)
static_compiler = Sprockets::StaticCompiler.new(env, target, :digest => config.assets.digest)
+
manifest = static_compiler.precompile(config.assets.precompile)
+ manifest_path = config.assets.manifest || target
+ FileUtils.mkdir_p(manifest_path)
File.open("#{manifest_path}/manifest.yml", 'wb') do |f|
YAML.dump(manifest, f)
View
5 actionpack/lib/sprockets/static_compiler.rb
@@ -1,5 +1,4 @@
require 'fileutils'
-require 'pathname'
module Sprockets
class StaticCompiler
@@ -26,8 +25,8 @@ def precompile(paths)
def compile(asset)
asset_path = digest_asset(asset)
- filename = target.join(asset_path)
- FileUtils.mkdir_p filename.dirname
+ filename = File.join(target, asset_path)
+ FileUtils.mkdir_p File.dirname(filename)
asset.write_to(filename)
asset.write_to("#{filename}.gz") if filename.to_s =~ /\.(css|js)$/
asset_path
View
4 railties/test/application/assets_test.rb
@@ -123,7 +123,6 @@ def precompile!
add_to_config "config.assets.digest = true"
precompile!
-
manifest = "#{app_path}/public/assets/manifest.yml"
assets = YAML.load_file(manifest)
@@ -137,10 +136,8 @@ def precompile!
# digest is default in false, we must enable it for test environment
add_to_config "config.assets.digest = true"
add_to_config "config.assets.manifest = '#{app_path}/shared'"
- FileUtils.mkdir "#{app_path}/shared"
precompile!
-
manifest = "#{app_path}/shared/manifest.yml"
assets = YAML.load_file(manifest)
@@ -148,7 +145,6 @@ def precompile!
assert_match(/application-([0-z]+)\.css/, assets["application.css"])
end
-
test "the manifest file should be saved by default in the same assets folder" do
app_file "app/assets/javascripts/application.js", "alert();"
# digest is default in false, we must enable it for test environment
Please sign in to comment.
Something went wrong with that request. Please try again.