我正在尝试更新此代码以使用已发布的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
现在已经删除了Sprockets :: Environment#static_root,暂时更改sprockets输出目录的最佳方法是什么?
编辑:此外,我希望能够清理自定义输出目录中的资产:)
答案 0 :(得分: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)
由于链轮铁轨的奇怪负载顺序,我不得不指定清单路径。如果不这样做,它就会卡在public/assets
,这不存在并且会破坏rake任务。 YMMV。
旁注:我最初在开发环境中尝试过此操作,但config.assets.prefix
拒绝更改。我怀疑将config.assets.enabled
放到true
会修复此问题,但我还没有去测试它。
作为奖励,assets:clean
与此解决方案完美配合(您可以自己查看in the rake task)