2012-02-23 15 views
6

E-posta hesap bilgilerini bir config.yml dosyasında saklamak istiyorum. Bu bilgileri, çevrimiçi görüldüğüm ve at this RailsCast numaralı hatlarıyla özetlediğim ortak bir kalıbı izleyerek bir Rails yapılandırma/başlatıcı dosyasında sabit olarak yüklüyorum. Mat Harvard's Blog'daki bir örneği izleyerek config.action_mailer.smtp_settings öğesini config/application.rb dosyasında kullanarak Action Mailer için varsayılanları ayarlamaya çalışıyorum. Raylarım sunucumu başlatırken başlatılmamış sabit hatalar almaya devam ediyorum. Config/başlatıcılardan önce application.rb çağrıldığını varsayarak. Başlangıç ​​sırasında config.action_mailer.smtp_settings'i ayarlayabileceğim başka bir yer var mı, ancak yapılandırma/başlatıcılar çalıştırıldıktan sonra mı?Yapılandırma/başlatıcı çalıştırıldıktan sonra Action Mailer varsayılanları nasıl ayarlanır?

Güncelleme: İlk yazım/sortamda net olmayabilir. Bir başlatıcıda config.yml dosyasını okuyorum. Bu yapılandırma dosyası, kullanıcı adı ve şifre gibi e-posta hesap bilgilerini saklar. Bu bilgiyi (kullanıcı adı ve şifre) application.rb veya environment.rb dosyalarına koymak istemiyorum. Kodumu environment.rb dosyasına taşımayı denedim, ancak rayları başlatırken aynı başlatılmamış sabit hatayla karşılaştı. eylem mailler ayarlarını belirlemek için

Benim kod şöyle görünür: Bir load_config.rb in başlatıcısı APP_CONFIG sabit ayarlamak için config.yml dosyasından okuyorum

config.action_mailer.smtp_settings = { 
    :address    => APP_CONFIG[:email_config][:address], 
    :port     => APP_CONFIG[:email_config][:port], 
    :domain    => APP_CONFIG[:email_config][:email_domain], 
    :user_name   => APP_CONFIG[:email_config][:user_name], 
    :password    => APP_CONFIG[:email_config][:password], 
    :authentication  => :plain, 
    :enable_starttls_auto => true 
    } 

    config.action_mailer.default_url_options = { 
    :host => APP_CONFIG[:email_config][:host] 
    } 

. Bu dosya aşağıdaki 2 satırları içerir:

raw_config = File.read(RAILS_ROOT + "/config/config.yml") 
APP_CONFIG = YAML.load(raw_config)[RAILS_ENV] 

cevap

0

Bir başlatıcı muhtemelen en azından official ActionMailer guide yönergeleri izleyen Raylar 3. yılında, bu bilgi için doğru yer değil, ben ortamda bilgi koyardı dosya - Sabitlerin tanımının, içinde bulunduğunuz ortama bağlı olarak değişeceğini ve bunun da aynı etkiyi yapacağını farz ediyorum. config/ortamlarda/production.rb Yani:

config.action_mailer.delivery_method = :smtp 
config.action_mailer.smtp_settings = { 
    :address    => "smtp.gmail.com", 
    :port     => 587, 
    :domain    => 'baci.lindsaar.net', 
    :user_name   => '<username>', 
    :password    => '<password>', 
    :authentication  => 'plain', 
    :enable_starttls_auto => true } 

utanmadan rehber çalınan Ben sadece başvurulan.

+2

Ben application.rb veya environment.rb dosyaları ya kullanıcı adı ve parola koyarak önlemek için çalışıyorum. Orijinal sorularımı/gönderimi kod örnekleri içerecek şekilde güncelledim. Yukarıda sağladığınız yapılandırma kodu başlatıcıda değil - application.rb dosyasındaydı. Sadece config.yml dosyasında okuyacağınız kod başlatıcıdaydı. –

+0

Bu yüzden çevre dosyalarından önce yüklenecek başlatıcıyı aldınız mı? – xecutioner

4

Bir başlatıcısı böyle bir şey koyabilirsiniz:

ActionMailer::Base.default_url_options = { :host => 'mysite.com' } 
İlgili konular