6

我試圖更新此代碼與發佈的Rails 3.1.0的工作:如何預編譯的資產,鏈輪/ Rails的資產管道時臨時更改輸出路徑,3.1.0

# temporarily set the static assets location from public/assets to our spec directory 
    ::Rails.application.assets.static_root = Rails.root.join("spec/javascripts/generated/assets") 

    ::Rake.application['assets:clean'].invoke 
    ::Rake.application['assets:precompile'].invoke 

現在鏈輪:: Environment#static_root已被刪除,暫時更改sprockets輸出目錄的最佳方法是什麼?

編輯:我也想能夠清理資產在我的自定義輸出目錄:)

回答

1

您可以使用config.assets.prefix,但這仍將把資產在公共目錄(見here爲rake任務,它加入了public_path和前綴)。

在你的情況,這應該工作:

Rails.application.config.assets.prefix = "../spec/javascripts/generated/assets" 
Rails.application.config.assets.manifest = File.join(Rails.public_path, config.assets.prefix) 

我必須指定,因爲鏈輪railtie的怪異的加載順序的清單路徑。如果沒有這樣做,它會卡在public/assets,這不存在並且會炸掉rake任務。因人而異。

附註:我在開發環境中,在第一次嘗試這一點,但config.assets.prefix不肯改變。我懷疑把config.assets.enabledtrue會解決這個問題,但我還沒有到處去測試它。

作爲獎勵,該assets:clean作品完全符合該解決方案(你可以看到它自己in the rake task

+0

我真的很喜歡這樣的問題該給我完美的藉口採取的軌道源的潛水: - ) –

+0

感謝Benoit,工作! –

+0

不能在rails 4中工作 –