/ / ако изявления за развитие и производствена среда - рубинка на релси, рубин на релси-4

ако изявления за среда за развитие и производство - рубинки на релси, рубинки на релси-4

Аз съм изграждане на Rails 4 App, използвайки апартамент Gem и аз съм остана за това как да продължи с определянето на моя мейлър домакин .. Това беше част от настойнически серия, която беше току-що спря след няколко епизода ..

Големият въпрос в момента е, че всичко това работино при натискане до Хероу, да си създам акаунт, имейлът за потвърждение се изпраща, но когато отида да потвърдя, потвърждението ме пренасочва към местния ми хост (lvh.me:3000) и приложението за продукция не получава актуализацията за потвърждение.

Имам следното в моята контролер на приложения:

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

Бих искал да добавя един if else изявление като това:

  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

Просто не мога да го разбера, или ако трябва да предприема друг подход към това?

Отговори:

4 за отговор № 1

Можете да поставите условия, базирани на средата на релсите, с тези:

Rails.env.production?

Rails.env.development?

Rails.env.test?

Така че във вашия код,

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

О, да, и изглежда, че сте забравили end във вашия if-else блок


3 за отговор № 2

Можеш да използваш Rails.env.production? методите, описани в публикацията на Рен, но конфигурационният файл imho за всяка среда е много по-добро място.

Обърнете внимание на Конфигуриране на приложенията на релсите част от официалното ръководство. Можете да използвате различна конфигурация за всяка среда, като поставите свързан код към config/environments/[environment name].rb файл. Например, ако искате да зададете хост за опции по подразбиране на url в производствената среда, можете да поставите следния код в края на config/environments/production.rb файл (малко преди последното end отчет):

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

Обърнете внимание, че този фрагмент съдържа друг подход. Можете да поставите домейна в променливи на средата и да използвате същия код в общия конфигурационен файл. Това е още по-добре, тъй като няма да имате твърди кодове и повтарящи се кодове.