3

Rails3.2.8アプリケーションにarbor-railsgemを含めましたが、開発モードでは正常に動作しますが、本番環境では次のエラーが発生します。

Started GET "/nullarbor.js" for 127.0.0.1 at 2012-09-20 15:35:23 -0700

ActionController::RoutingError (No route matches [GET] "/nullarbor.js"):
  actionpack (3.2.8) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
  actionpack (3.2.8) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
  railties (3.2.8) lib/rails/rack/logger.rb:26:in `call_app'
  railties (3.2.8) lib/rails/rack/logger.rb:16:in `call'
  actionpack (3.2.8) lib/action_dispatch/middleware/request_id.rb:22:in `call'
  rack (1.4.1) lib/rack/methodoverride.rb:21:in `call'
  rack (1.4.1) lib/rack/runtime.rb:17:in `call'
  activesupport (3.2.8) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
  rack (1.4.1) lib/rack/lock.rb:15:in `call'
  actionpack (3.2.8) lib/action_dispatch/middleware/static.rb:62:in `call'
  railties (3.2.8) lib/rails/engine.rb:479:in `call'
  railties (3.2.8) lib/rails/application.rb:223:in `call'
  rack (1.4.1) lib/rack/content_length.rb:14:in `call'
  railties (3.2.8) lib/rails/rack/log_tailer.rb:17:in `call'
  thin (1.4.1) lib/thin/connection.rb:80:in `block in pre_process'
  thin (1.4.1) lib/thin/connection.rb:78:in `catch'
  thin (1.4.1) lib/thin/connection.rb:78:in `pre_process'
  thin (1.4.1) lib/thin/connection.rb:53:in `process'
  thin (1.4.1) lib/thin/connection.rb:38:in `receive_data'
  eventmachine (1.0.0) lib/eventmachine.rb:187:in `run_machine'
  eventmachine (1.0.0) lib/eventmachine.rb:187:in `run'
  thin (1.4.1) lib/thin/backends/base.rb:63:in `start'
  thin (1.4.1) lib/thin/server.rb:159:in `start'
  rack (1.4.1) lib/rack/handler/thin.rb:13:in `run'
  rack (1.4.1) lib/rack/server.rb:265:in `start'
  railties (3.2.8) lib/rails/commands/server.rb:70:in `start'
  railties (3.2.8) lib/rails/commands.rb:55:in `block in <top (required)>'
  railties (3.2.8) lib/rails/commands.rb:50:in `tap'
  railties (3.2.8) lib/rails/commands.rb:50:in `<top (required)>'
  script/rails:6:in `require'
  script/rails:6:in `<main>'

の設定を確認しましたenvironments/が、次のように設定すると、次のことがわかりましたdevelopment.rb

config.assets.debug = false

開発モードでもエラーが発生します。そして、true本番環境に設定すると、正しく機能します。これを引き起こしている可能性がありますか?

更新: 実際には、 arbor.jsarbor_pathの関数と関係があるようです。

4

2 に答える 2

3

arbor.js はWeb ワーカーを使用します。つまり、ワーカーの作成に、arbor.js スクリプトがある場所への適切なリンクを提供する必要があります。

この問題を解決するためにできることは、コードで arbor_path 関数を使用する代わりに、arbor.js ファイルへの絶対パスを提供することです。これは、キャッシング ロジックや js ファイルの提供方法によって混乱する可能性があります。

つまり、置き換えてみてください

i=new Worker(arbor_path()+"arbor.js");

i=new Worker("/final/path/to/arbor.js");

arbor.jsで

于 2012-10-05T18:44:29.590 に答える
0

@Asimov4 が述べたように、問題は次の呼び出しで発生します。

new Worker(arbor_path()+"arbor.js");

それにもかかわらず、アセットのプリコンパイルと互換性のあるより洗練されたソリューションは、次のように変更することです。

new Worker("<%= asset_path('arbor.js') %>");

注: .js ファイルを .js.erb に変更することを忘れないでください!

于 2014-10-27T00:34:46.723 に答える