10

アプリケーションの Capistrano デプロイを設定したところ、次のエラーが発生し続けます。

  * executing ["ls /path/to/app/shared/assets/manifest*"]
    servers: ["web03"]
    [web03] executing command
[err :: web03] ls: /path/to/app/shared/assets/manifest*
[err :: web03] : No such file or directory

でマニフェスト ファイルを手動で作成するとtouch /path/to/app/shared/assets/manifest.yml、デプロイ スクリプトは正常に機能します。ただし、これはあらゆる種類の大ざっぱな感じがします。

私はこれをググってみましたが、収集できるのは、探しているマニフェスト ファイルがアセット パイプラインの製品であるということだけです。確認したところ、実際にはパイプラインが有効になっconfig.assets.enabled = trueているため ( )、途方に暮れています。

1) このマニフェスト ファイルとは何か、どのように作成されたのか。2) アプリケーション用に作成されていないのはなぜですか?

更新:私は答えに近づいていると思います。それは次の行と関係があると思います:

config.assets.prefix = "/some_other_path"

システムに Asset オブジェクトがあり、Cap が混乱している可能性があるため、"asset" パスの名前を変更する必要がありました。助言がありますか?

4

2 に答える 2

19

私の疑いは正しかった: これは、名前が変更されたアセット ディレクトリの問題でした。public/some_other_pathキャップは の代わりに中を見ることを知りませんでしたpublic/assets

つまり、この行は my にあるためapplication.rbです。

config.assets.prefix = "some_other_path"

この行を my に追加する必要がありましたdeploy.rb:

set :assets_prefix, "some_other_path"

次に、Cap はマニフェストを探す場所を認識し、それを にコピーしてshared/assets、正しく終了します。

パスをもう一度ハードコーディングする代わりに変数をdeploy.rb参照すると便利ですが、それはこの質問の範囲外です。config

于 2013-04-30T16:59:04.240 に答える