回答
没有一种简单的方法。资产管道依赖于Rails 3.1.x中的几个体系结构,这些体系结构在Rails 2.3中不存在。
您可以尝试使用Davis Frank outlines here的方法,但要警告它需要多个步骤。
如果您正在寻找资产的源代码:预编译rake任务,你可以在这里找到:
https://github.com/rails/rails/blob/3-1-stable/actionpack/lib/sprockets/assets.rake
不要指望它来运行的,是当你把它复制到你的导轨/任务在你的轨道2.3.14应用与链轮和链轮 - 助手宝石。
[更新]
我为在轨道2.3.14使用简单的预编译器rake任务(没有任何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/
你有这个rake任务的更新吗?我注意到你遗漏了最后的'end',所以我想知道这是否只是一个较大的.rake文件的一小部分。另外,你有没有关于如何处理js/css压缩和缩小的指针? – professormeowingtons 2013-07-17 20:20:43
最后的结局仍然存在,你必须向下滚动,它不适合窗户。不过,我现在使用这种方法,并且工作正常:http://jaredonline.github.io/blog/2012/05/16/sprockets-2-with-rails-2-dot-3/ – Joris 2013-07-18 21:50:18
谢谢Joris - 我昨天实际上找到了这个解决方案,它非常棒。但是,当我尝试运行'rake assets:precompile'任务时,它会尝试编译我在'sprockets.rb'中添加的所有路径中的所有文件。有任何想法吗?在这里看到我的问题:http://stackoverflow.com/questions/17730155/sprockets-asset-pipeline-in-rails-2-3 – professormeowingtons 2013-07-18 21:56:12
- 1. 滑轨资产管道:不预编译
- 2. Rails资产管道未预编译
- 3. Sass在Rails上没有预编译3.1资产管道,资产:预编译Rake任务
- 4. 资产预编译
- 5. Heroku的轨道上资产预编译
- 6. Rails资产管道 - 编译jQuery UI资产的问题
- 7. CSS预编译的资产
- 8. Rails的生产预编译资产
- 9. Heroku轨道预编译资产
- 10. 资产:预编译错误轨道
- 11. rails 4资产管道供应商资产图像未被预编译
- 12. 资产管道只编译JavaScript文件
- 13. 资产预编译不编译其他mime_types资产
- 14. Capistrano编译资产错误 - 资产:预编译:nondigest?
- 15. 预编译资产和非编译资产
- 16. 资产管道
- 17. 资产预编译错误
- 18. Rails 3.2资产:预编译
- 19. 耙资产:预编译
- 20. 预编译轨AngularJS资产
- 21. 无法预编译资产
- 22. Rails 3.1资产预编译
- 23. 预编译的资产在生产轨道4,5的应用
- 24. 的Rails 3.2.3资产预编译管道无助
- 25. 部署到heroku时的资产管道预编译问题
- 26. 不预编译所需文件的资产管道
- 27. 资产管道中的预编译HTML页面
- 28. Rails:生产资产:预编译错误
- 29. 直接链接到资产管道中的编译资源?
- 30. Rails 3 - 资产管道 - 缓存资产
我紧接着这篇文章,但没有解释如何让这个任务工作... – astropanic 2012-01-27 14:12:52
这是不正确的;他在第7步中特别解释了这一点:“Rails 3.1提供资源:预编译以用作部署过程的一部分生成一个空的Rails 3.1应用程序并将其复制到lib/tasks。将config.ru中的Sprockets配置复制到这个任务。” – 2012-01-27 14:14:27
如果您对本文有任何疑问,最好的地方是作者自己:http://pivotallabs.com/users/dwfrank/profile – 2012-01-27 14:32:50