rails4多站点在视图中显示主机 - 有时可以正常工作

时间:2015-11-25 17:54:39

标签: ruby-on-rails ruby-on-rails-4 heroku environment host

现在整个下午一直在努力......

我在heroku上设置了一个代码库多个应用程序。我试图在主页上显示主机(stati_controller),它在我的主域上运行:www.domain.hu(env:production,production.rb)但不在另一个主机上:www.domain。 co.uk(env:production-uk,production-uk.rb) 调试告诉我:没有 我错过了什么?

基于thisthis我尝试了以下但没有运气(一个接一个地尝试......)。在 production-uk.rb

Rails.application.default_url_options[:host] = 'www.domain.co.uk'
Rails.application.default_url_options[:host] = 'domain.co.uk'
config.asset_host = 'www.domain.co.uk' - this "kills" the CSS 
config.default_url_options = { host: 'www.domain.co.uk' }
config.default_url_options[:host] = 'domain.co.uk'
config.action_controller.default_url_options = { host: 'www.domain.co.uk' }
config.action_controller.default_url_options = { host: 'domain.co.uk' }
Rails.application.default_url_options = { host: 'domain.co.uk' }
config.action_controller.default_url_options = { host: 'domain.co.uk' }
config.action_controller.default_url_options[:host] = 'domain.co.uk'
host = 'www.domain.co.uk'
  config.action_controller.default_url_options = { host: host }

我也在 static_pages_controller.rb 中尝试了这一点 - 没有运气(有或没有过滤前):

  def default_url_options
    if Rails.env == 'production'
      {:host => "www.domain.hu"}
    elsif Rails.env == 'production-uk'
      {:host => "www.domain.co.uk"}
    else  
      {}
    end
  end 

验证基于request.host 的工作正常,所以我不理解(static_pages_controller.rb):

before_filter :authenticate
...
def authenticate
domain = request.host
if domain == 'www.domain.hu' 
authenticate_or_request_with_http_basic do |username, password| username == 'stuff' && password == 'boda'
  end
elsif domain == 'www.domain.co.uk'
authenticate_or_request_with_http_basic do |username, password| username == 'stuff' && password == 'boda'
end
end
end

我在生产中也有这个 - uk.rb也可以:

host = 'www.domain.co.uk'
config.action_mailer.default_url_options = { host: host }

更新 还有一件事:当我在应用程序的heroku控制台中并编写app.host时,回复始终是" www.example.com"

感谢阅读!

2 个答案:

答案 0 :(得分:2)

您可以尝试在每个heroku应用上设置域名,例如

heroku config:set DOMAIN_NAME=www.domain.co.uk

并在您的应用中拨打

ENV['DOMAIN_NAME']

答案 1 :(得分:0)

这是一个棘手的错误。我有

@host = request.host

在static_pages_controller.rb中的gmaps4rails位内

这就是为什么它并不总是有效.... grr

相关问题