我如何进行佣金任务
assets:precompile
可用于我的rails 2.3.14应用程序?
答案 0 :(得分:4)
如果您正在寻找资产的源代码:预编译rake任务,您可以在此处找到它:
https://github.com/rails/rails/blob/3-1-stable/actionpack/lib/sprockets/assets.rake
当您使用sprockets和sprockets-helpers gem将它复制到rails 2.3.14 app中的lib / tasks时,不要指望它按原样运行。
[更新]
我做了一个简单的预编译器rake任务,用于rails 2.3.14(没有任何javascript压缩)。您可能希望更改某些内容,具体取决于您的配置。仔细测试清理任务,因为它使用rm_rf命令; - )
BUILD_DIR = Rails.root.join("public/assets")
DIGEST = true
namespace :assets do
task :compile => :cleanup do
sprockets = Sprockets::Environment.new
sprockets.append_path 'app/assets/images'
sprockets.append_path 'app/assets/javascripts'
sprockets.append_path 'app/assets/stylesheets'
sprockets.each_logical_path do |logical_path|
if asset = sprockets.find_asset(logical_path)
target_filename = DIGEST ? asset.digest_path : asset.logical_path
prefix, basename = asset.pathname.to_s.split('/')[-2..-1]
FileUtils.mkpath BUILD_DIR.join(prefix)
filename = BUILD_DIR.join(target_filename)
puts "write asset: #{filename}"
asset.write_to(filename)
#asset.write_to("#{filename}.gz") if filename.to_s =~ /\.(css|js)$/
end
end
end
# Cleanup asset directory
task :cleanup do
dirs = Dir.glob(File.join(BUILD_DIR.join("{*}")))
dirs.each do |dir|
puts "removing: #{dir}"
FileUtils.rm_rf dir
end
end
end
[更新#2]
我现在正在使用这种方法,并且工作正常: http://jaredonline.github.io/blog/2012/05/16/sprockets-2-with-rails-2-dot-3/
答案 1 :(得分:3)
没有一种直截了当的方法。资产管道依赖于Rails 3.1.x中的几个体系结构,这些体系结构在Rails 2.3中不存在。
您可以尝试使用 Davis Frank outlines here 的方法,但要注意它需要一些步骤。