2012-01-27 109 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