복붙노트

[RUBY-ON-RAILS] 5 레일 :로드 LIB 파일 생산

RUBY-ON-RAILS

5 레일 :로드 LIB 파일 생산

나는 레일 5.0.0에 레일 4.2.6에서 내 애플 리케이션 중 하나를 업그레이드했습니다. 업그레이드 가이드는 자동로드 기능을 기본으로 생산에서 비활성화되어 있음을 말한다.

나는 application.rb 파일에 자동로드 모든 LIB 파일을로드하기 때문에 지금은 항상 내 프로덕션 서버에 오류가 발생합니다.

module MyApp
    class Application < Rails::Application
        config.autoload_paths += %W( lib/ )
    end
end

지금, 나는 true로 config.enable_dependency_loading를 설정했지만 이에 대한 더 나은 해결책이 있을까. 자동 로딩은 기본적으로 생산에서 비활성화되어있는 이유가 있어야합니다.

해결법

  1. ==============================

    1.레일 (5)로 이동 한 후 변경 내 목록 :

    레일 (5)로 이동 한 후 변경 내 목록 :

  2. ==============================

    2.난 그냥 대신 GitHub의 코멘트에 언급 akostadinov 같은 config.autoload_paths의 config.eager_load_paths을 사용 : https://github.com/rails/rails/issues/13142#issuecomment-275492070

    난 그냥 대신 GitHub의 코멘트에 언급 akostadinov 같은 config.autoload_paths의 config.eager_load_paths을 사용 : https://github.com/rails/rails/issues/13142#issuecomment-275492070

    # config.autoload_paths << Rails.root.join('lib')
    config.eager_load_paths << Rails.root.join('lib')
    

    그것은 개발 및 생산 환경에서 작동합니다.

    제안 # 교체 주셔서 감사합니다 요한 {Rails.root} / Rails.root.join와 LIB ( 'LIB')!

  3. ==============================

    3.자동 로딩 때문에 스레드 안전 프로덕션 환경에서 사용할 수 없습니다. 링크에 대한 Зелёный @ 감사드립니다.

    자동 로딩 때문에 스레드 안전 프로덕션 환경에서 사용할 수 없습니다. 링크에 대한 Зелёный @ 감사드립니다.

    나는 Github에서에 권장하는 내 응용 프로그램 디렉토리에 lib 디렉토리 폴더에 lib에 파일을 저장하여이 문제를 해결했다. 응용 프로그램 폴더에있는 모든 폴더가 자동으로 레일에 의해로드됩니다.

  4. ==============================

    4.다음은이 문제에 대한 긴 설명이다. https://github.com/rails/rails/issues/13142

    다음은이 문제에 대한 긴 설명이다. https://github.com/rails/rails/issues/13142

  5. ==============================

    5.이 LIB 자동 리로드를 가질 수 있습니다, 너무 프로덕션 환경에서 작동합니다.

    이 LIB 자동 리로드를 가질 수 있습니다, 너무 프로덕션 환경에서 작동합니다.

    추신 내 대답을 변경, 지금은 너무 사용자 환경에서 작업을 할 수 있도록 관계없이 환경을 모두 eager- 자동로드 경로에 추가 (단계 등)

    # config/initializers/load_lib.rb
    ...
    config.eager_load_paths << Rails.root.join('lib')
    config.autoload_paths << Rails.root.join('lib')
    ...
    
  6. ==============================

    6.어떤 의미에서, 여기 열망 부하가 제대로 일을 할 수 없습니다 다르게 구성 될 때마다 필요한 자동로드 경로를 추가 같은 시간에, 열망과 자동로드 구성을 중앙 집중화 레일 (5)의 통합 접근 방식은 다음과 같습니다

    어떤 의미에서, 여기 열망 부하가 제대로 일을 할 수 없습니다 다르게 구성 될 때마다 필요한 자동로드 경로를 추가 같은 시간에, 열망과 자동로드 구성을 중앙 집중화 레일 (5)의 통합 접근 방식은 다음과 같습니다

    # config/application.rb
    ...
    config.paths.add Rails.root.join('lib').to_s, eager_load: true
    
    # as an example of autoload only config
    config.paths.add Rails.root.join('domainpack').to_s, autoload: true
    ...
    
  7. ==============================

    7.그냥 config.autoload_paths에 config.eager_load_paths에서 설정 / application.rb 파일을 변경합니다. 때문에 레일 5 자동 로딩은 기본적으로 생산 환경에 사용할 수 없습니다. 자세한 내용은 링크를 따르십시오.

    그냥 config.autoload_paths에 config.eager_load_paths에서 설정 / application.rb 파일을 변경합니다. 때문에 레일 5 자동 로딩은 기본적으로 생산 환경에 사용할 수 없습니다. 자세한 내용은 링크를 따르십시오.

     #config.autoload_paths << "#{Rails.root}/lib"
      config.eager_load_paths << Rails.root.join('lib')
    

    그것은 환경의 개발 및 생산을 모두 사용할 수 있습니다.

  8. ==============================

    8.누군가가 나처럼이 고생를 들어, 응용 프로그램에서 디렉토리는 / 단지 곳으로는 충분하지 않습니다. 예, 자동 로딩 만 충족되어야 규칙의 네임 필요하지 필요한 재로드를 얻을 것이다.

    누군가가 나처럼이 고생를 들어, 응용 프로그램에서 디렉토리는 / 단지 곳으로는 충분하지 않습니다. 예, 자동 로딩 만 충족되어야 규칙의 네임 필요하지 필요한 재로드를 얻을 것이다.

    또한, 로딩 된 루트 수준의 lib 디렉토리에 대한 초기화 사용하는 것은 개발 과정에서 기능을 다시로드 방지 할 수 있습니다.

  9. ==============================

    9.문제를 해결 응용 프로그램에 lib 디렉토리 폴더를 도왔 이동, 내 트위터 API를 생산에서 실행하지 않을 것입니다. 나는 "초기화되지 않은 상수의 TwitterApi"을 가지고 내 트위터 API 내 LIB 폴더에 있었다. 내 application.rb에서 config.autoload_paths + DIR = [ "# {Rails.root} / 응용 프로그램 / lib 디렉토리"] 있었다하지만 폴더를 이동하기 전에 작동하지 않았다.

    문제를 해결 응용 프로그램에 lib 디렉토리 폴더를 도왔 이동, 내 트위터 API를 생산에서 실행하지 않을 것입니다. 나는 "초기화되지 않은 상수의 TwitterApi"을 가지고 내 트위터 API 내 LIB 폴더에 있었다. 내 application.rb에서 config.autoload_paths + DIR = [ "# {Rails.root} / 응용 프로그램 / lib 디렉토리"] 있었다하지만 폴더를 이동하기 전에 작동하지 않았다.

    이 속임수를 썼는지

  10. ==============================

    10.레프의 답변을 요약하면 : MV LIB 응용 프로그램 내 LIB 코드 / 자동 다시로드 자동으로 적재 모든이에 충분했다.

    레프의 답변을 요약하면 : MV LIB 응용 프로그램 내 LIB 코드 / 자동 다시로드 자동으로 적재 모든이에 충분했다.

    (6.0.0beta3 레일하지만 레일에 5.x를 너무을 잘 작동합니다)

  11. from https://stackoverflow.com/questions/38198668/rails-5-load-lib-files-in-production by cc-by-sa and MIT license