6

我正在尝试更新此代码以使用已发布的 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 输出目录的最佳方法是什么?

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

4

1 回答 1

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)

由于 sprockets railtie 的奇怪加载顺序,我不得不指定清单路径。如果不这样做,它就会卡在public/assets不存在的 rake 任务上。YMMV。

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

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

于 2011-09-02T17:02:05.293 回答