2015-08-09 53 views
0

我想知道資產:預編譯完成或不在耙上。 目前,我檢查是否存在public/assets如何知道資產:在Rails上完成預編譯?

Rails.application.assets.find_asset('application.css') 

find_asset在這種情況下不起作用。

+0

你在與檢查實現? – EugZol

+0

我只在資產之後運行我的rake任務:預編譯。我知道我可以用'Rake :: Task ['assets:precompile']。但我想寫一個獨立的代碼。 – akm

回答

1

可以使用this task通過subelsky檢查,如果資產預編譯:

namespace :assets do 
    task :check do 
    root_dir = File.join(File.dirname(__FILE__),"..","..") 
    assets_last_modified_at = Dir["#{root_dir}/app/assets/**/**"].map { |p| File.mtime(p) }.sort.last 
    assets_last_compiled_at = Dir["#{root_dir}/public/assets/**/**"].map { |p| File.mtime(p) }.sort.last 

    if assets_last_modified_at > assets_last_compiled_at 
     fail "Assets need to precompiled; last asset modified at #{assets_last_modified_at}" 
    end 
    end 
end 

然後你就可以將此任務添加到您的任務的依存關係:

task :mine => 'assets:check' 
    ... 
end 
+0

非常感謝! – akm

+0

不客氣!如果你喜歡這個建議,也考慮我的問題upvoting :) – EugZol