/ / if instrukcje dla środowisk programistycznych i produkcyjnych - ruby-on-rails, ruby-rails-4

jeśli instrukcje dla środowisk programistycznych i produkcyjnych - ruby-rails, ruby-rails-4

Buduję aplikację Rails 4 używając Gem Gem i utknąłem na tym, jak postępować z definiowaniem mojego hosta mailera. Było to częścią serii samouczków, która została zatrzymana po kilku odcinkach ..

Obecnie najważniejszą kwestią jest to, że wszystko działatryb rozwoju, jednak kiedy popycham do Heroku, utworzę konto, wysłany zostanie e-mail z potwierdzeniem, jednak kiedy go potwierdzę, potwierdzenie przekierowuje mnie z powrotem do mojego hosta lokalnego (lvh.me:3000), a aplikacja produkcyjna nie otrzymuje aktualizacja potwierdzenia.

Mam następujące kontroler aplikacji:

  def set_mailer_host
subdomain = current_account ? "#{current_account.subdomain}." : ""
ActionMailer::Base.default_url_options[:host] = "#{subdomain}lvh.me:3000"
end

Chciałbym dodać if else oświadczenie takie jak:

  def set_mailer_host
if environment == development
subdomain = current_account ? "#{current_account.subdomain}." : ""
ActionMailer::Base.default_url_options[:host] = "#{subdomain}lvh.me:3000"
else
subdomain = current_account ? "#{current_account.subdomain}"
ActionMailer::Base.default_url_options[:host] = "#{subdomain}patrolvault.co"
end

Po prostu nie mogę tego zrozumieć, czy powinienem przyjąć inne podejście do tego?

Odpowiedzi:

4 dla odpowiedzi № 1

Możesz umieścić warunki na podstawie środowiska Railsowego za pomocą następujących:

Rails.env.production?

Rails.env.development?

Rails.env.test?

W twoim kodzie

def set_mailer_host
if Rails.env.development?
subdomain = current_account ? "#{current_account.subdomain}." : ""
ActionMailer::Base.default_url_options[:host] = "#{subdomain}lvh.me:3000"
else
subdomain = current_account ? "#{current_account.subdomain}"
ActionMailer::Base.default_url_options[:host] = "#{subdomain}patrolvault.co"
end
end

O tak, i wygląda na to, że zapomniałeś end w Twoim if-else blok


3 dla odpowiedzi № 2

Możesz użyć Rails.env.production? metody opisane w postach Ren, ale plik konfiguracyjny imho dla każdego środowiska jest o wiele lepszym miejscem.

Spójrz na Konfigurowanie aplikacji Railsowych sekcja oficjalnego przewodnika. Możesz użyć innej konfiguracji dla każdego środowiska, umieszczając powiązany kod config/environments/[environment name].rb plik. Na przykład, jeśli chcesz ustawić host domyślnych opcji URL w środowisku produkcyjnym, możesz umieścić następujący kod na końcu config/environments/production.rb plik (tuż przed najnowszym end komunikat):

config.action_mailer.default_url_options = { host: ENV.fetch("DOMAIN") }

Zauważ, że ten fragment zawiera inne podejście. Możesz umieścić domenę w zmiennych środowiskowych i użyć tego samego kodu w ogólnym pliku konfiguracyjnym. Jest to jeszcze lepsze, ponieważ nie będziesz miał żadnych zakodowanych wartości i powtarzającego się kodu.