これは非常に基本的な質問ですが、必要な答えを正確に見つけることができません。
私の開発環境では、trunk/app/models/parsers/my_file.rb に次のコードがあります。
def initialize
...
@logger = Utils::SingletonLogger.get_logger
@logger.debug("Instantiating my_file object")
end
それはうまくいきます。
しかし、それをテスト環境にデプロイすると (すべてのコードは同一である必要がありますが、違いがある場合はどこから探し始めればよいかわかりません)、Rails は Parsers::MyFile::Utils を見つけることができないと文句を言います。使用したい Utils モジュールは app/lib/my_utils.rb にあります。これは、Rails がパーサー サブディレクトリ内のコード用にある種の名前空間を作成していて、そこで Utils モジュールを探しているだけだと思わせますが、それを機能させる方法がわかりませんでした。現在のディレクトリ構造の外を見るように指定するために使用できるメインのアプリケーションレベルのプレフィックスはありますか?
と を追加require 'my_utils'
してみましrequire_relative '../../../lib/my_utils.rb'
た。前者はファイルを見つけることができません。後者は、require がまったくない場合と同じエラーをスローします。これを要求する必要があるかどうかはわかりません。
いずれにせよ、別のディレクトリにあるモジュール内のコードを参照する方法がよくわかりません.レールが明示的なパスを必要とする時期/理由がわかりません. Rails が現在のファイルの外にあるコードを参照するようにする方法を知っている。これらのいずれかに関するヘルプをいただければ幸いです。
ああ、Ruby 1.9.3 と rails 3.2.1 を使っています。
編集:application.rbまたは環境ファイルを変更することなく、機能し始めました。現在のバージョンではrequireすらありません。最初は機能せず、別のサーバーの再起動後に機能する明らかな理由はありますか? (コードが入った後に再起動したと確信しています-以前にそれを忘れただけではないと思います。)
とにかく、助けてくれてありがとう - 本当に感謝しています。