如何在预编译资产时临时更改输出路径,Sprockets/Rails资产管道3.1.0

Gab*_*ley 6 ruby-on-rails ruby-on-rails-3.1 sprockets asset-pipeline

我正在尝试更新此代码以使用已发布的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
Run Code Online (Sandbox Code Playgroud)

现在已经删除了Sprockets :: Environment#static_root,暂时更改sprockets输出目录的最佳方法是什么?

编辑:此外,我希望能够清理自定义输出目录中的资产:)

Ben*_*ret 1

您可以使用config.assets.prefix,但这仍然会将资产放在公共目录中(请参阅此处的 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)
Run Code Online (Sandbox Code Playgroud)

由于链轮导轨的加载顺序很奇怪,我必须指定清单路径。如果不这样做,它就会卡在public/assets不存在的 处并破坏 rake 任务。YMMV。

旁注:我最初在开发环境中尝试过这一点,但config.assets.prefix拒绝更改。我怀疑 put config.assets.enabledtotrue可以解决这个问题,但我还没有时间测试它。

作为奖励,它与此解决方案完美配合(您可以在 rake 任务中assets:clean亲自看到它)