2

Rails は運用環境では CSS および JS ファイルをロードできません (404 エラー) が、開発環境では問題なくロードできます。

Rails 3 の展開と実行に Capistrano を使用しています。開発のパスは/www/myappですが、本番のパスは/www/myapp/currentです。

アプリケーション自体は正常に動作しているように見えるため、問題は CSS/JS ファイルに限定されているようです。

RAILS_ROOT変数をenvironment/production.rbの /www/myapp/currentに設定しようとしましたが、違いはありませんでした。ファイルはまだ読み込まれません。

プロダクションログからの完全なスタックは次のとおりです。

Started GET "/stylesheets/scaffold.css?1280867531" for 98.173.61.21 at 2010-08-04 17:04:05 -0700

ActionController::RoutingError (No route matches "/stylesheets/scaffold.css"):
/usr/local/rvm/gems/ruby-1.9.2-rc2/gems/actionpack-3.0.0.beta4/lib/action_dispatch/middleware/show_exceptions.rb:55:in `call'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/railties-3.0.0.beta4/lib/rails/rack/logger.rb:14:in `call'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/rack-1.1.0/lib/rack/runtime.rb:17:in `call'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/rack-1.1.0/lib/rack/lock.rb:11:in `block in call'
  <internal:prelude>:10:in `synchronize'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/rack-1.1.0/lib/rack/lock.rb:11:in `call'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/railties-3.0.0.beta4/lib/rails/application.rb:145:in `call'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/railties-3.0.0.beta4/lib/rails/application.rb:81:in `method_missing'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:642:in `process_client'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:715:in `block in worker_loop'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:713:in `each'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:713:in `worker_loop'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:604:in `block (2 levels) in spawn_missing_workers'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:601:in `fork'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:601:in `block in spawn_missing_workers'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:597:in `each'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:597:in `spawn_missing_workers'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:611:in `maintain_worker_count'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:270:in `start'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:29:in `run'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/bin/unicorn:123:in `<top (required)>'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/bin/unicorn:19:in `load'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/bin/unicorn:19:in `<main>'
4

2 に答える 2

2

このエラー メッセージは、Rails アプリが静的ファイルの要求を取得しているように見えます。Rails 3 は、デフォルトでは静的ファイルを提供しません。これは、Web サーバーの方がはるかに優れているためです。Web サーバーの構成を確認する必要があります。パブリック ディレクトリにリクエストの静的ファイルが存在する場合は最初に検索し、静的ファイルがない場合はリクエストを Rails アプリにのみ転送するように構成する必要があります。

config.serve_static_assets = trueあるいは、Railsが config/environments/production.rb で静的ファイルを提供できるようにすることもできます。ただし、静的ファイルを提供するためだけに Rails アプリの処理リソースを浪費するべきではないため、これは本番環境では推奨されません。ウェブサーバーにそうするように伝えた方がよいでしょう。

于 2010-08-05T01:00:49.267 に答える
-1

次のコマンドを実行して、この問題を修正しました。

RAILS_ENV=production rake assets:precompile

参考: http: //guides.rubyonrails.org/asset_pipeline.html

私の環境はNginx+ Unicorn+Rails4

于 2015-06-27T02:16:04.100 に答える