Program Club

Rails 3에서 초기화 프로그램의로드 순서를 어떻게 변경하나요?

proclub 2020. 12. 3. 20:47
반응형

Rails 3에서 초기화 프로그램의로드 순서를 어떻게 변경하나요?


yaml 파일에서 구성 설정을로드하는 이니셜 라이저가 있습니다. 다른 초기화 프로그램에서이 설정을 사용해야합니다. 설정이 필요한 이니셜 라이저가 설정을 볼 수 없습니다. 내가 생각하는 것은 설정이 너무 늦게로드된다는 것입니다. 내 구성 이니셜 라이저가 먼저로드된다는 것을 어떻게 보장합니까? 이니셜 라이저가 다른 것에 의존하는 것과 같은 un-rails입니까?

감사!


이니셜 라이저의 이름을로 변경하면 01_name.rb이전에 알파벳순으로로드됩니다.

편집하다

구성에 대한 공식 Rails 가이드 를 인용하려면 ( zetetic 팁에 감사드립니다 ) :

이니셜 라이저에 순서 종속성이있는 경우 이름을 지정하여로드 순서를 제어 할 수 있습니다. 예를 들어 01_critical.rb는 02_normal.rb보다 먼저로드됩니다.


다음과 같이 첫 번째 require 문 바로 뒤에 구성 코드를 config / environment.rb 파일에 넣으십시오.

# Load the rails application
require File.expand_path('../application', __FILE__)

# Load global configurations
CONFIG = Hashie::Mash.new YAML.load_file(Rails.root.join("config", "application.yml"))[Rails.env]

# Initialize the rails application
RailsSetup::Application.initialize!

가이드에서 이니셜 라이저 파일 이름 앞에 숫자를 추가하도록 권장하지만, 그것은 추악 해 보입니다. 또 다른 방법은 제공된 초기화 후크를 활용하는 것입니다. 참조 http://guides.rubyonrails.org/configuring.html#initialization-events를

# application.rb

module YourApp
  class Application < Rails::Application
    config.before_initialize do
     # initialization code goes here
    end
  end
end

require_relative를 사용하여 하나의 파일이 먼저로드되었는지 확인하십시오.

# aaa.rb
require_relative 'bbb'
# ... code using values from bbb.rb ...

참고 URL : https://stackoverflow.com/questions/4779773/how-do-i-change-the-load-order-of-initializers-in-rails-3

반응형