1

ActiveRecord로 백업 된 새로운 Rails 앱에 configatron gem을 사용하고 있습니다. 내 configatron 설정 중 일부는 파일에 설정되어 그들이 수시로 변경됩니다 일부는 DB에서 가져온이 앱은 여러 이메일을 전송하기 때문에, 여기 내 configatron.rbRails 앱에 Configatron 구성을 저장하는 가장 적합한 장소는 무엇입니까?

configatron.app.uptime.start = Time.now 
configatron.email.signature = Setting.where(:keyname => "email_signature").first.value.to_s unless Setting.where(:keyname => "email_signature").first.nil? 

에서 라인의 커플 여러 메일러로부터 - 이것은 한 곳에서이 글로벌 설정을 유지하는 좋은 방법이며, 서명에 대한 db 검색을 줄입니다. 어떤 이유로 사이트 관리자가 변경하기로 결정한 경우 - 웹 설정 인터페이스 (설정 모델에 연결)를 업데이트 할 수 있습니다.

이것은 모두 즐겁습니다. 그러나 configatron.rb를 저장하는 가장 좋은 곳은 무엇입니까? & 지금은 이니셜 라이저 폴더에 있습니다. 즉, 응용 프로그램 시작시 한 번로드됩니다. 즉, 설정 중 하나가 변경되면 사이트 관리자가 새 프로모션 웹 사이트를 언급하기 위해 이메일 서명을 조정하기로 결정합니다. 변경 사항을 적용하려면 다시 시작해야합니다. app (running passenger - 코드에서 touch tmp/restart.txt하는 것은 간단합니다). 그러나 그것은 재설정하지 않을 다른 구성 설정 (예 : 가동 시간 시작 타임 스탬프)도 재설정됩니다.

내 configatron.rb를로드하고로드 할 때 더 좋은 곳은 무엇입니까? 을 시작시로드 한 다음 일부 구성을 변경하지 않고 앱을 다시 시작할 수 있도록 허용 하시겠습니까?

감사합니다.

답변

1

이니셜 라이저에 넣는 것이 저장 장소라고 생각합니다.

응용 프로그램을 다시 시작하지 않고 구성을 업데이트하려면 일반적으로 "워치 독"을 설정해야합니다. 구성 업데이트를 확인하기 위해 데이터베이스를 당기는 프로세스. 변경된 구성을 앱에 푸시하는 콜백을 구현할 수도 있습니다.

1

configatron을 이니셜 라이저에 넣을 때 Rails 환경 변수가 configatron 설정을로드하기 전에로드됩니다. 결과적으로 Rails 구성 (config/environments/production.rb)에로드 된 미들웨어는 configatron 변수를 사용할 수 없었습니다.

그래서 환경을로드 한 후 필요가 I만을 저장하는 응용 프로그램 설정,로드 할로 대신으로 environment.rb에 우선으로 실제로 나를 위해 행동을 요구한다

+0

를로드하기까지했다. 사실 어떤 환경 응용 프로그램 (prod 대 test/dev)에 있는지에 따라 다른 설정을로드합니다. – konung