/lib
開発中にディレクトリ内のコードを自動ロードするために、イニシャライザで次の行を使用します。
config / initializers / custom.rb:
RELOAD_LIBS = Dir[Rails.root + 'lib/**/*.rb'] if Rails.env.development?
(Rails 3クイックヒント:開発モードでのlibフォルダーの自動再読み込み)
それは素晴らしい働きをしますが、生産で使用するには非効率的です-各リクエストでライブラリをロードする代わりに、起動時にそれらをロードしたいだけです。同じブログには、これを行う方法を説明する別の記事があります。
config / application.rb:
# Custom directories with classes and modules you want to be autoloadable.
config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]
ただし、これに切り替えると、開発中でも、lib関数を使用しようとするとNoMethodErrorsが発生します。
私のlibファイルの例:
lib / extensions.rb:
Time.class_eval do
def self.milli_stamp
Time.now.strftime('%Y%m%d%H%M%S%L').to_i
end
end
呼び出しTime.milli_stamp
はNoMethodErrorをスローします
私は他の人がSOで同様の質問に答えたことに気づきますが、それらはすべて命名規則や以前に心配する必要がなかった他の問題に対処しているようです-私のlibクラスはリクエストごとのロードですでに機能していたので、それを変更したいだけです起動ごとの読み込み。これを行う正しい方法は何ですか?