2012-01-27 85 views

回答

3

没有一种简单的方法。资产管道依赖于Rails 3.1.x中的几个体系结构,这些体系结构在Rails 2.3中不存在。

您可以尝试使用Davis Frank outlines here的方法,但要警告它需要多个步骤。

+0

我紧接着这篇文章,但没有解释如何让这个任务工作... – astropanic 2012-01-27 14:12:52

+0

这是不正确的;他在第7步中特别解释了这一点:“Rails 3.1提供资源:预编译以用作部署过程的一部分生成一个空的Rails 3.1应用程序并将其复制到lib/tasks。将config.ru中的Sprockets配置复制到这个任务。” – 2012-01-27 14:14:27

+0

如果您对本文有任何疑问,最好的地方是作者自己:http://pivotallabs.com/users/dwfrank/profile – 2012-01-27 14:32:50

4

如果您正在寻找资产的源代码:预编译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/

+0

你有这个rake任务的更新吗?我注意到你遗漏了最后的'end',所以我想知道这是否只是一个较大的.rake文件的一小部分。另外,你有没有关于如何处理js/css压缩和缩小的指针? – professormeowingtons 2013-07-17 20:20:43

+0

最后的结局仍然存在,你必须向下滚动,它不适合窗户。不过,我现在使用这种方法,并且工作正常:http://jaredonline.github.io/blog/2012/05/16/sprockets-2-with-rails-2-dot-3/ – Joris 2013-07-18 21:50:18

+0

谢谢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