2014-02-05 1 views
1

Gmail이 smtp를 통해 이메일을 보내도록 앱을 구성 중이므로 production.rb 파일에 action_mailer 설정을 작성하고 있습니다.SMTP 구성을 별도의 파일에 배치하는 방법은 무엇입니까?

내 Gmail 자격 증명을 production.rb 파일에 작성하고 싶지는 않지만 git 버전입니다.

생산 RB에 :

require "SmtpData" 

    config.action_mailer.default_url_options = {:host => 'my server's ip'} 
    config.action_mailer.delivery_method = :smtp 
    config.action_mailer.smtp_settings = { 
    enable_starttls_auto: "true", 
    address: SmtpData::ADDRESS, 
    port: SmtpData::PORT, 
    domain: "pjforex.com", 
    authentication: :plain, 
    :user_name   => SmtpData::USER, 
    :password    => SmtpData::PASS 
    } 

다음 내가 포함 config/initializers/smtp_data.rb을 만들어 :

내가 지금까지 만든 것입니다

class SmtpData 
    USER = '[email protected]' 
    PASS = 'password' 
    ADDRESS = "smtp.gmail.com" 
    PORT = "587" 
end 

을하지만 내 카피 스트라 노의 자산을 미리 컴파일 할 때 , 얻을 :

rake aborted! 
uninitialized constant SmtpData 

해결 방법에 대한 단서. 또는이 문제에 대한 더 나은 접근 방법?

덕분에,

답변

1

구성을 Git에서 제외되었지만 배포간에 공유해야합니다.

(YAML을 사용하는 것이 중요하지는 않지만 config의 경우 더 깨끗함) 카피스트라 노 루트 폴더에 다음 내용으로 파일을 만듭니다. :

user: [email protected] 
pass: your_password 
address: smtp.gmail.com 
port: 587 

2))도 당신의 linked_filesconfig/deploy.rb (이상적으로, config/database.yml가 저장되어야한다 이런 식으로이 파일을 추가합니다

set :linked_files, %w{config/database.yml config/smtp.yml} 

3)에서 SMTP의 설정 읽기부터 config/smtp.yml까지.

4) 귀하의 개발 환경에 맞게 로컬로 config/smtp.yml을 가질 수도 있지만, 귀하의 .gitignore에 그것을 추가하는 것을 잊지 마십시오.

+0

흥미 롭다면, 평소에 가져온 이름을 통해 파일을 참조 할 수 있습니까? –

+0

@ dongiulio 다른 Capistrano 작업에서 링크 된 파일의 목록을 가져 오는 것을 의미합니까? 물론, 왜. 또는 다른 것? – bredikhin

+0

필자는 이러한 변수를 올바른 구성에 연결하기 위해 이러한 변수를 어떻게 참조합니까? –

0

나는 production.rb 사용자가 정의한 클래스에 액세스 할 수없는 이유 production.rb 인, smtp_data.rb 전에로드됩니다 있다고 생각합니다.

git 버전에서 민감한 자격 증명을 유지하기 위해 사용하는 해결책 중 하나는 production.rb.template을 생성하여 git 저장소에 추가하는 것입니다. 이 파일은 자격 증명의 위치 표시자를 보유한다는 점을 제외하고는 현재 production.rb에 대해 가지고있는 것의 사본입니다. 예를 들어,

:username => USERNAME GOES HERE 

그런 다음, 우리는 (선택적으로,이 자식에 의해 무시되도록 설정 등) 저장소에서 production.rb를 제거합니다. 저장소의 로컬 복사본을 체크 아웃 할 때 production.rb.templateproduction.rb으로 복사하고 자격 증명 정보를 채 웁니다. 이것은 로컬 배포에만 존재하며 git으로 푸시되지 않습니다.

+0

안녕하세요, 감사합니다.하지만이 방법이 Capitrano와 어떻게 작동하는지, git 저장소에서 배포하고 repo에있는 production.rb로 사용하는지 잘 모르겠습니다. 어떻게 그걸 처리하니? –

관련 문제