2015-08-09 54 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