Прямо сейчас я использую это, которое работает на узел разработки, но я должен вручную измениться {: разместите => ""} код, когда я перемещусь в производство.
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 на среду:
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/environments/development.rb, но я все еще заставляю "Недостающий хост связываться с! Обеспечьте: параметр хоста или набор default_url_options [: хост]" ошибка
config.action_controller.default_url_options = {:host => "localhost:3000"}
И я даже попробовал его этот путь:
config.action_controller.default_url_options = {:host => "localhost", :port => "3000"}
Править:
Я теперь также следовал за этим, и тем не менее та же ошибка ведет 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
Это сводит меня с ума, что я пропускаю здесь???
Я знаю, что это - старый поток, но я столкнулся с этим с Ruby 2.6.3 и направляющими 5.2.3. Поведение, которое я видел, состояло в основном в том, который каждый путь, который я добавил, приведет к сбою с Error during failsafe response: undefined method 'empty?' for nil:NilClass
. В производстве это хорошо работало, но в моей среде разработки, я упомяну выше ошибку.
фиксация для меня была, добавляет это к controllers/application_controller.rb
:
def default_url_options
if Rails.env.production?
Rails.application.routes.default_url_options = { host: "www.production-domain.com", protocol: 'https' }
elsif Rails.env.development?
Rails.application.routes.default_url_options = { host: 'localhost:3000', protocol: 'http' }
end
end
я затем смог работать на своей среде разработки мое локальное.