호스트를 확인하기 위해 제약 조건을 사용하는 경로가 있고 본질적으로 동일하지만 호스트 제한이없는 경로가 있습니다.이 경로는 실제로 네임 스페이스이지만 단순하지만 이 예는) 할 것입니다 :레일에서 assert_routing을 통해 호스트 제약 조건을 테스트하는 경로
match "/(:page_key)" => "namespace_one/pages#show", :constraints => proc {|env| env['SERVER_NAME'] == 'test.mysite.local' }
match "/(:page_key)" => "namespace_two/pages#show"
이 일을 정확히 예상대로 호스트를 정의하고 수행 할 때 브라우저를 통해 및 통합 테스트에 액세스 할 때 get "/page_key"
등 내가이 보장 테스트를 작성하려는 그러나
경로는 지금까지 작동합니다. 나는 다음과 같은 테스트 (현재는에 속합니다.는 그래서 제약없이 하나와 일치하는 경우) 호스트를 설정할 수 있습니다
assert_routing '', { :controller => 'namespace_one/pages', :action => 'show' }
=> The recognized options <{"action"=>"show", "controller"=>"frontend/pages"}>
did not match <{"action"=>"show", "controller"=>"namespace_two/pages"}>,
difference: <{"controller"=>"namespace_one/pages"}>
나는 ENV를 덤프하려고하면 제약 내가 할 모든 --- :controller
이다 발동에.
내가 assert_routing을 없애고 get :show
전화하고 덤프하면 @controller
은 올바른 컨트롤러로 해결됩니다 (예상대로 이러한 라우팅은 모두 HTTP 요청을 통해 정상적으로 작동합니다).