【问题标题】:How to temporarily change output path when precompiling assets, Sprockets / Rails assets pipeline, 3.1.0如何在预编译资产时临时更改输出路径,Sprockets / Rails 资产管道,3.1.0
【发布时间】:2011-08-31 17:48:32
【问题描述】:

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

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

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3.1 sprockets asset-pipeline


    【解决方案1】:

    您可以使用config.assets.prefix,但这仍会将资产放在公共目录中(有关 rake 任务,请参阅here,它连接了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 拒绝更改。我怀疑将config.assets.enabled 放到true 会解决这个问题,但我还没有时间测试它。

    作为奖励,assets:clean 与此解决方案完美配合(您可以自己查看in the rake task

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多