初始化程序Rails 4

时间:2015-11-25 03:18:16

标签: ruby-on-rails ruby apartment-gem

我正在使用Apartment gem为多租户应用程序而我正在使用“host_hash elevator”根据请求的子域和主机切换租户。

这是通过以下代码(来自他们的文档)完成的:

#initalizers/apartment.rb

# application.rb
module MyApplication
  class Application < Rails::Application
    config.middleware.use 'Apartment::Elevators::HostHash', {'example.com' => 'example_tenant'}
  end
end

在哪里说'example.com'=&gt; 'example_tenant'我需要使用request.host发送一个哈希,以便在我的公司模型中找到request_host数据库字段的值与request.host匹配的公司。如果这有意义吗?

如果我在一个例子中硬编码所以它就像下面的代码我可以让它工作,但我不知道如何根据请求动态地执行它:

#initalizers/apartment.rb

# application.rb
module MyApplication
  class Application < Rails::Application
    config.middleware.use 'Apartment::Elevators::HostHash', {'test.lvh.me:3000' => 'test.lvh.me:3000'}
  end
end

以上代码有效,因为这是我目前所在的域名,它与我设置的字段和公寓租户相匹配。

但是,因为当我把'request.host'放在初始化器中时,我得到一个错误:未定义的局部变量/方法'request'

如果我使用'Rack :: Request.new(env).host',我会得到未定义的局部变量/方法'env'

如何在初始化程序中获取request.host来解决此问题?

1 个答案:

答案 0 :(得分:1)

感谢我对公寓gem的github问题的一些帮助,我能够找到解决方案。

<div> <h1> <span> anything </span> </h1> <h5> anything> </h5> </div>

<div> <h2> anything </h2> <h5> anything> </h5> </div>

<div> <h5> anything> <h2> anything </h2> </h5> </div>