サブドメインのRyanBatesスクリーンキャストごとにRails3でサブドメインを設定しようとしています。しかし、それは私にとってはうまくいきません。私は次の設定をしています:
# routes.rb
constraints(Subdomain) do
get 'devices' => 'devices#all'
end
# lib/subdomain.rb
class Subdomain
def self.matches?(request)
# binding.pry
request.subdomain.present? && request.subdomain == "admin"
end
end
URLadmin.localhost:3000/devices
をロードすると、にルーティングされdevices#all
ますが、ルーティングエラーが発生しますRouting Error No route matches [GET] "/devices"
。明らかにルーティングが機能していません。
pry
コメントが上にあるデバッグセッションを設定し、それがヒットしたため、制約は機能していますが、次の出力が得られます。
[1] pry(Subdomain)> request.subdomain
=> ""
[2] pry(Subdomain)> request.subdomains
=> []
[3] pry(Subdomain)> request.host
=> "admin.localhost"
したがって、railsはURLのadmin部分を取得して、それをサブドメイン変数に配置していません。ホスト値を使用して管理ルートにフィルターをかけるのは簡単ですが、クリーンで正しい状態を維持したいと思います。
Railsがサブドメインの値を設定していないのはなぜですか?
編集
jdoeとcoreywardはどちらも正解です。私を失望させたのは、私もサイトにアクセスして使用pow
しxip.io
ていて、同じエラーが発生したことでした。tld> 1であるため、これは奇妙なことでしたhttp://admin.app_name.192.168.1.68.xip.io/devices
。何が起こっていたのかというと、のサブドメインはxip
でしたadmin.app_name.192.168.1.68
。これも一致ロジックを指定すると失敗し、ルーティングされません。