/lib
개발하는 동안 이니셜 라이저에서 다음 줄을 사용하여 디렉토리에 코드를 자동로드합니다 .
config / initializers / custom.rb :
RELOAD_LIBS = Dir[Rails.root + 'lib/**/*.rb'] if Rails.env.development?
( Rails 3 Quicktip : 개발 모드에서 lib 폴더 자동 다시로드 )
훌륭하게 작동하지만 프로덕션 환경에서 사용하기에는 너무 비효율적입니다. 각 요청마다 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 클래스는 이미 요청 당로드를 위해 일 했습니다. 허가하는 시작 로드. 이것을하는 올바른 방법은 무엇입니까?