Je ne suis pas sûr de savoir comment cela s'applique au concombre (en utilisant Shoulda ici), mais après avoir essayé quelques recommandations ailleurs, cela semble fonctionner de manière fiable:
def in_subdomain(str)
# test.host == default testing domain, feel free to change to match your usage
@request.host = "#{str}.test.host"
end
Et puis avant d'appeler get
, vous juste besoin de vous assurer que vous êtes in_subdomain('subdomain-fuuuuuu')
. Cela définit correctement l'URL et current_subdomain
au moins (je n'ai pas vérifié tout), redirige sans spécifier de sous-domaine rester dans le sous-domaine, et les redirections vers d'autres sous-domaines (ou :subdomain => false
) définissent toujours la bonne valeur redirected_to.
Ces (haute qualité, je suis sûr que vous pouvez dire) les tests passent, par exemple, et ils ont un contrôle sur current_subdomain dans le contrôleur:
should "show on the owner's subdomain" do
in_subdomain(@user.domain)
get :show, :id => @user.things.first.id
assert_response :success
end
should "not show on another users' subdomain" do
in_subdomain(@random_user.domain)
get :show, :id => @user.things.first.id
assert_redirected_to user_url(@random_user, :subdomain => @random_user.domain)
end
should "not show on a non-existent subdomain" do
in_subdomain("cthulhu-fhtagn")
get :show, :id => @user.things.first.id
assert_redirected_to root_url(:subdomain => false)
end
Cela ressemble beaucoup mieux, merci! Je ne suis pas complètement content, mais c'est le meilleur que j'ai vu jusqu'ici. –