Ich bin nicht sicher, wie gut diese in Gurke gilt (Shoulda hier verwendet wird), aber nach ein paar Empfehlungen an anderer Stelle versuchen, dies zuverlässig zu funktionieren scheint:
def in_subdomain(str)
# test.host == default testing domain, feel free to change to match your usage
@request.host = "#{str}.test.host"
end
vor und dann get
zu nennen, Sie müssen Sie nur sicherstellen, dass Sie in_subdomain('subdomain-fuuuuuu')
sind. Das setzt die URL und current_subdomain
mindestens richtig (ich habe alles nicht überprüft), Weiterleitungen ohne Angabe von Subdomain bleiben in der Subdomain, und alle Weiterleitungen zu anderen Subdomains (oder :subdomain => false
) setzen immer noch den richtigen umgeleiteten_to-Wert.
Diese (hochwertige und ich bin sicher, dass Sie sagen können) Tests bestehen, zum Beispiel, und sie haben eine Kontrolle über current_subdomain in der Steuerung:
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
Dieses viel besser aussieht, danke! Ich bin nicht ganz glücklich damit, aber es ist das Beste, was ich bisher gesehen habe. –