3

libディレクトリにクラスDbCacheを定義するlib\db_cache.rbというクラスがあります。

私のRailsモデルは、開発モードのとき、および本番モードでRailsコンソールを実行しているときにもアクセスできます。

しかし、本番モードのRailsサーバーを実行すると、モデルクラス(Fooなど)が「初期化されていない定数」Foo::DbCacheについて文句を言います。

org/jruby/RubyModule.java:2677:in `const_missing', 
org/jruby/RubyMethod.java:134:in `call'

この行はapplication.rbにあります

config.autoload_paths += %W(#{Rails.root}/lib)

リンクされたSOの質問に示されている他のバリエーションも試しましたが、喜びはありません。

Linuxでjruby1.7.3(1.9.3p385)-Java1.7.0_13-b20を使用しています。Railsはバージョン3.2.12です。

私はこれらの質問Railsを見てきました-なぜRAILS_ROOT/lib内のモデルが本番モードで利用できないのですか?Rails 3のlibフォルダーからモジュール/クラスをロードする最良の方法は?しかし、それは私の場合には役立たないようです。

これに関するアイデアを事前に感謝します。

PS今のところ私の回避策は、モデルクラスに「db_cache」を要求することです:(

4

2 に答える 2

1

クラスを拡張しようとしているようです。db_cache.rbファイルを見ないと、はっきりとはわかりません。

その場合は、持っていてもまったく問題ありません

extend DbCache

モデルクラス定義で

于 2013-06-20T01:30:42.070 に答える
0

この問題は、config.threadsafeの有効化に関連しているようです。/config/environments/production.rbにあります

これは私が持っていたものです:

  # Enable threaded mode
  if defined?(Rails::Server)
    puts "Rails Server running - so enable threadsafe!"
    config.threadsafe!
  end

私はjrubyを使用しているので、これがそれほど問題になるとは思わない。少なくとも、これらの行を削除すると、状況ははるかにうまくいきました:)

于 2013-06-20T17:54:23.030 に答える