Как установить config.action_controller.default_url_options = {: host = '#' '} для каждой среды - PullRequest
58 голосов
/ 17 апреля 2011

Прямо сейчас я использую это, которое работает для хоста разработки, но я должен вручную изменить код {: host => ""} при переходе в производство.

post.rb

def share_all
  url =  Rails.application.routes.url_helpers.post_url(self, :host => 'localhost:3000')
  if user.authentications.where(:provider => 'twitter').any?
    user.twitter_share(url)  
  end
end

Я хотел бы использовать это, а затем определить default_url_options для среды:

post.rb

def share_all
  url =  Rails.application.routes.url_helpers.post_url(self)
  if user.authentications.where(:provider => 'twitter').any?
    user.twitter_share(url)  
  end
end

Я пытался добавить это в мой config / environment / development.rb, но я все еще получаю сообщение «Отсутствует хост для ссылки! Пожалуйста, укажите: параметр хоста или установите default_url_options [: host]» ошибка

development.rb

config.action_controller.default_url_options = {:host => "localhost:3000"}

И я даже попробовал это так:

development.rb

config.action_controller.default_url_options = {:host => "localhost", :port => "3000"}

EDIT:

Я также следовал этому и тому же руководству по ошибкам http://edgeguides.rubyonrails.org/action_controller_overview.html#default_url_options

прикладной контроллер

class ApplicationController < ActionController::Base
  protect_from_forgery
  include ApplicationHelper
  def default_url_options
    if Rails.env.production?
      { :host => "example.com"}
    else
      {:host => "example1.com"}
    end
  end
end

Это сводит меня с ума, чего мне здесь не хватает ???

Ответы [ 4 ]

113 голосов
/ 20 апреля 2011

Хорошо, я понял, как правильно написать:

Rails.application.routes.default_url_options[:host] = 'localhost:3000'

:)

6 голосов
/ 17 апреля 2011

Необходимо перезагрузить сервер, чтобы изменения в этом файле вступили в силу.

5 голосов
/ 30 января 2018

Унаследуйте default_url_options вашего приложения от ActionMailer.

. Вы хотите, чтобы все было как можно более СУХИМЫМ, поэтому в идеале не нужно жестко кодировать хост и порт в нескольких местах дляв той же среде, если ваш ActionMailer на самом деле не использует хост и порт, отличные от остальных ваших Application.

Чтобы установить default_url_options для всего вашего Application, простодобавьте следующую строку в файл config/environment.rb (изменив MyApp на имя вашего приложения):

# Set the default host and port to be the same as Action Mailer.
MyApp::Application.default_url_options = MyApp::Application.config.action_mailer.default_url_options

Это решит вашу проблему и автоматически установит default_url_options *1019* на то же самоекак ваш config.action_mailer.default_url_options:

$ MyApp::Application.config.action_mailer.default_url_options
#=> {:host=>"lvh.me", :port=>"3000"}

$ MyApp::Application.default_url_options
#=> {:host=>"lvh.me", :port=>"3000"}
1 голос
/ 18 июля 2018

config.action_mailer.default_url_options = {: host => "ваш хост"}

например, ваш хост localhost: 3000

Вы можете поместить это в файлы test.rb, development.rb, host.rb могут отличаться от среды к среде

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...