복붙노트

[RUBY-ON-RAILS] 레일 3에서 환경 변수 설정 (고안 + Omniauth)

RUBY-ON-RAILS

레일 3에서 환경 변수 설정 (고안 + Omniauth)

라이언 베이츠는 자신의 페이스 북 인증 스크린 캐스트에서 다음 "FACEBOOK_APP_ID"와 "FACEBOOK_SECRET"환경 변수를 설정하는 방법을 내가 알아 내기 위해 노력했습니다.

provider :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_SECRET']

비슷한 틱 주위 질문,하지만 난 레일 3.2.1에서 작동시킬 수있었습니다 아무 대답이있다.

최신 정보:

2013 년 5 월로서, ENV 변수를 처리하는 나의 선호하는 방법은 피가로의 보석을 통해입니다

해결법

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

    1.당신은 코멘트를 살펴 수 :

    당신은 코멘트를 살펴 수 :

    당신도 당신의 서버를 시작하는 쉘에서 직접 환경 변수를 설정할 수 있습니다 :

    FACEBOOK_APP_ID=12345 FACEBOOK_SECRET=abcdef rails server
    

    또는 (오히려 해키), 당신은 당신의 설정 / 환경 / development.rb에서 그들을 설정할 수 있습니다 :

    ENV['FACEBOOK_APP_ID'] = "12345";
    ENV['FACEBOOK_SECRET'] = "abcdef";
    

    그러나 나는 둘 다 할 수 없을 것입니다. 내가 설정 파일을 만들 것입니다 모든 환경에서 해당 값을 보유하고있는 (구성 / facebook.yml 말한다). 그리고 이니셜 라이저에서 상수로이로드 :

    development:
      app_id: 12345
      secret: abcdef
    
    test:
      app_id: 12345
      secret: abcdef
    
    production:
      app_id: 23456
      secret: bcdefg
    
    FACEBOOK_CONFIG = YAML.load_file("#{::Rails.root}/config/facebook.yml")[::Rails.env]
    

    그런 다음 FACEBOOK_CONFIG [ '비밀']에 의해 FACEBOOK_CONFIG [ 'APP_ID']과 ENV [ 'FACEBOOK_SECRET']에 의해 코드에서 ENV [ 'FACEBOOK_APP_ID를'] 교체합니다.

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

    2.몇 가지 옵션이 있습니다 :

    몇 가지 옵션이 있습니다 :

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

    3.여기에 또 다른 생각입니다. 위의 제안, provider.yml 파일의 키와 값을 정의합니다. 그런 다음 (Application.initialize 호출하기 전에!) 당신의 environment.rb에이를 넣어 :

    여기에 또 다른 생각입니다. 위의 제안, provider.yml 파일의 키와 값을 정의합니다. 그런 다음 (Application.initialize 호출하기 전에!) 당신의 environment.rb에이를 넣어 :

    YAML.load_file("#{::Rails.root}/config/provider.yml")[::Rails.env].each {|k,v| ENV[k] = v }
    

    그리고 이러한 환경 변수는 intializers 중 어떤 순서 종속성없이 omniauth 초기화에서 참조 할 수 있습니다.

  4. from https://stackoverflow.com/questions/11648620/setting-environment-variables-in-rails-3-devise-omniauth by cc-by-sa and MIT license