2016-11-21 48 views
0

私はをlibディレクトリに作成します。私はrails consoleでそれを呼び出したときにRailsは自動的にlibを最初からロードします

class AwsMail 
    def... 
end 

しかし、それはこのエラーを投げました。

pry(main)> AwsMail 
NameError: uninitialized constant AwsMail 

このファイルをロードして呼び出すことができるようにする必要があります。

このようにします。

pry(main)> load "#{Rails.root}/lib/awsmail.rb" 
=> true 
pry(main)> AwsMail 
=> AwsMail 

このファイルを自動的にロードするにはどうすればよいですか?

答えて

1

クラス名がAwsMailの場合、ファイルはaws_mail.rbである必要があります。

チェック事前に指定する定数自動ロード各 の場所を必要とRubyの自動ロードとは対照的にRails autoloading — how it works, and when it doesn't

良いブログの記事は、Railsは、ファイル名に定数名をマップする簡単な 規則に従います。ネスティングがディレクトリに 対応し、定数名が強調されています

MyModule::SomeClass # => my_module/some_class.rb 

また、自動ロードパスにlibフォルダを追加することを忘れていけません。

+0

おかげで、それは良いの参照です。 –

2

はあなたが好きな、config/application.rbautoload_pathにそれを追加する必要があります。

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

ありがとう、それは動作します。 –

関連する問題