【问题标题】:rails4 multisite show host in view - sometimes worksrails4 multisite show host in view - 有时有效
【发布时间】:2016-02-28 15:30:06
【问题描述】:

整个下午都在做这个……

我在 heroku 上设置了一个代码库多个应用程序。我正在尝试在主页(stati_controller)上显示主机,该主机适用于我的主域:www.domain.hu(env:production,production.rb)但不在另一个:www.domain.co。英国(环境:生产-英国,生产-uk.rb) 调试告诉我:无 我错过了什么?

基于this 和this 我尝试了以下但没有运气(一个接一个地尝试......)。在 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

我在 production-uk.rb 中也有这个,它也有效:

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

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

感谢阅读!

【问题讨论】:

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


    【解决方案1】:

    这是一个 stvpid 错误。我有

    @host = request.host
    

    在 static_pages_controller.rb 中的 gmaps4rails 位中

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

    【讨论】:

      【解决方案2】:

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

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

      在您的应用中调用

      ENV['DOMAIN_NAME']
      

      【讨论】:

      • 感谢您的快速回复!我按照您的建议做了,并设法从视图文件中输出域。然而它仍然让我感到沮丧,为什么设置一些应用程序知道“关于它自己”它的主机是什么而另一个不知道......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-02
      • 1970-01-01
      • 2020-06-12
      • 2014-07-02
      相关资源
      最近更新 更多