/ / якщо заяви для розробки та виробничого середовища - рубіни на рельсах, рубіни на рейках-4

якщо заявки на розробку та виробничу середу - рубіни на рельсах, рубіни на рейках-4

Я будую додаток Rails 4, використовуючи квартиру Gem, і я застряє про те, як продовжувати визначати мій поштовий хост .. Це була частина навчальної серії, яка була просто зупинена через кілька епізодів ..

Велика проблема зараз полягає в тому, що все це працюєРежим розробки, однак, коли я натискаю на Heroku, створюю обліковий запис, електронний лист із підтвердженням відправляється, однак, коли я йду, щоб підтвердити, що підтвердження переспрямовує мене назад до мого локального хосту (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 з цими:

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? методи, описані в публікації Ren, але файл конфігурації imho для кожного середовища набагато краще.

Погляньте на Налаштування додатків Rails розділ офіційного довідника. Ви можете використовувати різну конфігурацію для кожного середовища, поставивши відповідний код на config/environments/[environment name].rb файл Наприклад, якщо ви хочете встановити хост для параметрів URL-адреси за замовчуванням у виробничому середовищі, ви можете додати наступний код наприкінці config/environments/production.rb файл (незадовго до останнього end виступ):

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

Зауважте, що цей фрагмент містить інший підхід. Ви можете помістити домен у змінні середовища та використовувати той же код у загальному файлі конфігурації. Це ще краще, оскільки у вас не буде жорстко закріплених значень та повторного коду.