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が、これでもアセットは public ディレクトリに配置されます (と プレフィックスを結合する 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.enabledtrueこれが修正されると思いますが、まだテストすることはできません。

おまけとして、 はこのソリューションで完全に機能します ( rake タスクでassets:clean確認できます) 。

于 2011-09-02T17:02:05.293 に答える