0

Rails 3.0 アプリケーションを Rails 3.1 にアップグレードしていますが、開発中にアセット パイプラインが機能しません。私はnginxリバースプロキシでthinを使用しています。

例えば

javascript_include_tag 'application' # => <script src="/javascripts/application.js" type="text/javascript"></script>

そしてカールで…

$ curl -sL -w "%{http_code}" "http://myapp.dev/javascripts/application.js" -o /dev/null
404
$ curl -sL -w "%{http_code}" "http://myapp.dev/assets/application.js" -o /dev/null
404

しかし、nginx ではなく直接シン ヒットすると、期待どおりの結果が得られます。

javascript_include_tag 'application' # => <script src="/assets/application.js" type="text/javascript"></script>

それは機能しますか?

$ curl -sL -w "%{http_code}" "http://localhost:3000/assets/application.js" -o /dev/null
200

うん!これはなぜでしょうか?

これは私のnginx構成からの抜粋です: https://gist.github.com/1163638

詳細情報を提供させていただきます。お気軽にお尋ねください。

4

2 に答える 2

1

開発環境ファイルを変更しましたか? デフォルトでは、アセット パイプラインの作業は本番環境でのみ行われます。

于 2011-08-22T21:59:14.623 に答える
1

あなたの問題は、アセットをプリコンパイルする必要がある可能性が最も高いです。実行してみてください

rake assets:precompile

これは、存在を確認し、存在しない場合はコンパイルする ruby​​ サーバーとは異なり、nginx が想定されているアセットを盲目的に提供しようとするためです。

この件に関するRyan Bates のスクリーンキャストを見ることをお勧めします。

編集:

私が知る限り、ファイルが存在しない場合、nginx にリクエストをバックエンドに渡す方法はありませんが、nginx の構成にあまり詳しくないので、質問するのはおそらく良い質問です。サーバー障害

于 2011-08-22T22:12:34.610 に答える