문제

레일에 앱별 구성을 저장해야 합니다.하지만 다음과 같아야 합니다.

  • 모든 파일(모델, 뷰, 도우미 및 컨트롤러)에서 접근 가능
  • 환경이 지정되거나 지정되지 않습니다. 즉, 각 환경은 Environment.rb에 지정된 구성을 덮어쓸 수 있습니다.

나는 Environment.rb를 사용하여 다음과 같은 것을 넣으려고 노력했습니다.

USE_USER_APP = true

그것은 나에게는 효과가 있었지만 특정 환경에서 덮어쓰려고 하면 작동하지 않습니다. 예를 들어 Production.rb가 Rails:Initializer.run 블록 안에 있는 것처럼 보이기 때문입니다.

그럼 누구요?

도움이 되었습니까?

해결책

나는 친구의 설정을 돕고 있었습니다. Ricardo가 언급한 솔루션 어제.다음과 유사한 내용으로 YAML 파일을 로드하여 약간 해킹했습니다(여기서는 메모리에서 이동).

require 'ostruct'
require 'yaml'
require 'erb'
#config = OpenStruct.new(YAML.load_file("#{RAILS_ROOT}/config/config.yml"))
config = OpenStruct.new(YAML.load(ERB.new(File.read("#{RAILS_ROOT}/config/config.yml")).result))
env_config = config.send(RAILS_ENV)
config.common.update(env_config) unless env_config.nil?
::AppConfig = OpenStruct.new(config.common)

이를 통해 그는 Rhtml과 같이 구성에 Ruby 코드를 삽입할 수 있었습니다.

development:
  path_to_something: <%= RAILS_ROOT %>/config/something.yml

다른 팁

구성트론을 보세요: http://github.com/markbates/configatron/tree/master

아직 사용해본 적은 없지만 현재 적극적으로 개발 중이고 꽤 괜찮아 보입니다.

가장 기본적인 작업은 Environment.rb에서 클래스 변수를 설정하는 것입니다.저는 Google Analytics를 위해 이 작업을 수행했습니다.기본적으로 개발이나 스테이징으로 인해 측정항목이 왜곡되지 않도록 현재 환경에 따라 다른 키를 원합니다.

이것이 내가 한 방법입니다.

~ 안에 lib/analytics/google_analytics.rb:

module Analytics
  class GoogleAnalytics
    @@account_id = nil

    cattr_accessor :account_id
  end
end

그리고 나서 environment.rb 또는 environments/production.rb 또는 다른 환경 파일 중 하나:

Analytics::GoogleAnalytics.account_id = "xxxxxxxxx"

그런 다음 참조해야 할 곳이 있으면 Google Analytics JavaScript를 사용하여 기본 레이아웃을 호출하면 됩니다. Analytics::GoogleAnalytics.account_id.

좋은 방법을 찾았어요 여기

환경 변수를 사용하십시오.헤로쿠는 이것을 사용합니다.코드베이스에 구성을 유지하면 코드에 액세스할 수 있는 사람은 누구나 모든 비밀 구성(aws api 키, 게이트웨이 api 키 등)에 액세스할 수 있다는 점을 기억하세요.

daemontool의 envdir은 구성을 설정하는 데 좋은 도구입니다. Heroku가 애플리케이션에 환경 변수를 제공하는 데 사용하는 도구라고 확신합니다.

나는 사용했다 레일스 설정이 캐시됨.

사용이 매우 간단하고 구성 값을 캐시된 상태로 유지하며 동적으로 변경할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top