29

私はここで、運用サーバーでアセットをプリコンパイルするために何度も試行錯誤してきました (ruby 1.9.2 と Rails 3.1.1 を使用した簡単な ubuntu インストール、および新しい sprockets 2.10 を使用した 3.1.2RC も試しました)。 .

「require_tree 引数はディレクトリでなければなりません」。スタックでこれに関連する他の問題を見てきましたが、状況はまったく同じではなく、サブフォルダーにスタブファイルを作成し、その時点で相対的にのみ参照するなど、提案された解決策はどれも役に立ちませんでした。運がない。

それに加えて、もちろん、これはすべての開発マシン (Mac ですが、構成は同じで、gem と gem が一致していても) の本番環境で完全に機能します。

ここに私の /app/assets/javascript/application.js があります:

//= require ../../views/app/manifest
//= require_self

それほど多くはありません。基本的には、アプリ領域の実際のマニフェスト ファイルを指すだけです (ええ、正確にボックス化されたバニラ Rails ではありませんが...)

ビュー/管理者 (/views/app/manifest.coffee.js) のスタブ マニフェストは次のとおりです。

# = require ./app
# = require_tree ./models
# = require_directory ./views <- or using require_directory, either would work fine.

私が言ったように、開発環境では、まったく問題はありません。アセット パイプラインはオンザフライでコンパイルされ、すべてが優れています。実行中、rake assets:dev マシンでプリコンパイル、どちらも問題ありません。

それを本番マシンに送信し、まったく同じコードを実行すると、次のようになります。

require_tree 引数はディレクトリでなければなりません

ここには、私が見ていない小さな小さな違いがあるはずです。どんな助けでも大歓迎です!

4

2 に答える 2

85

あなたが説明したのとまったく同じ問題に遭遇しました。私の本番サーバーは Heroku (cedar stack) でした。私の場合、問題は次のいずれかでした。

require_tree ./mobile

正当なディレクトリを指していましたが、このディレクトリにはファイルがありませんでした。開発では問題ではありませんでしたが、本番環境のセットアップに関する何かが原因で、「require_tree 引数はディレクトリでなければなりません」というエラーが発生しました。

うまくいけば、それは役に立ちます。

于 2011-12-18T08:38:52.450 に答える
18

require_tree には既存のフォルダーを指定する必要がありますが、 gitは空のフォルダーを保存 しないため、heroku にデプロイすると、それらの空のフォルダーは存在しません。

1 つのトリックは、保持したいフォルダーに空の.keepファイルを追加することです。

于 2014-05-10T20:46:41.430 に答える