0
我有兩個子域的Rails應用程序配置爲這樣的routes.rb中使用Rails領域約束
Rails.application.routes.draw do
constraints subdomain: 'admin' do
devise_for :admin_users, ActiveAdmin::Devise.config
ActiveAdmin.routes(self)
end
namespace :api, defaults: { format: :json },
constraints: { subdomain: 'api' }, path: '/' do
scope module: :v1,
constraints: ApiConstraints.new(version: 1, default: true) do
resources :countries, only: [:show, :index]
end
end
end
這工作完全在本地。我/etc/hosts中看起來像
admin.localhost.local localhost
api.localhost.local localhost
但是,當涉及到這個配置在Heroku的,因爲應該事情不工作。
我配置我的DNS和Heroku的自定義域是這樣的:
admin.my_project.my_domain.com -> admin.my_project.my_domain.com.herokudns.com
api.my_project.my_domain.com -> api.my_project.my_domain.com.herokudns.com
但是,當我訪問http://admin.my_project.my_domain.com我得到一個路由錯誤
,並將日誌有這樣的:
heroku[router]: at=info method=GET path="/" host=admin.my_project.my_domain.com request_id=XXX fwd="IP.IP.IP.IP" dyno=web.1 connect=0ms service=3ms status=404 bytes=1744 protocol=http
app[web.1]: INFO -- : Started GET "/" for IP.IP.IP.IP at 2017-03-14
app[web.1]: FATAL -- : ActionController::RoutingError (No route matches [GET] "/"):
這意味着當得到請求時,Rails不知道它是來自子域。
我該如何做這項工作? 謝謝