2011-09-06 132 views
4

試圖讓部署軌3.1應用程序的竅門......Rails 3.1 - 如何判斷資產是否在生產中預編譯?

基於我讀過,我已經把下面的代碼在我deploy.rb:

before "deploy:symlink", "assets:precompile" 

namespace :assets do 
    desc "Compile assets" 
    task :precompile, :roles => :app do 
    run "cd #{release_path} && rake RAILS_ENV=#{rails_env} assets:precompile" 
    end 
end 

但要告訴你事實,我不能注意到有或沒有差異。有什麼我在這裏失蹤?

編輯*找到了答案:

http://spreecommerce.com/blog

預編譯生產您通常會執行以下rake任務(在生產服務器上)的資產。

$ bundle exec rake assets:precompile 這會將所有資產寫入public/assets目錄,同時在文件名中包含MD5指紋以增加緩存優勢。

注意:在生產過程中,來自使用image_tag,asset_path,javascript_include_tag等視圖的資產的所有引用都會自動將此指紋包含在文件名中,以便提供正確的版本。

回答

0

有配置要做,但應該在默認情況下正確設置。獲取你的config/application.rb中,看看你是否發現這樣的:

if defined?(Bundler) 
    # If you precompile assets before deploying to production, use this line 
    Bundler.require(*Rails.groups(:assets => %w(development test))) 
    # If you want your assets lazily compiled in production, use this line 
    # Bundler.require(:default, :assets, Rails.env) 
end 
... 
config.assets.enabled = true 

你也應該有那些在您production.rb文件:

# Compress JavaScripts and CSS 
config.assets.compress = true 

# Don't fallback to assets pipeline if a precompiled asset is missed 
config.assets.compile = false 

這應該是設置方式。是嗎?