0

我在我的项目中添加了 Subdomain-fu。在 ApplicationController 我有 before_filter 它检查 url 并将 app.com 重定向到 www.app.com,将 www.subdomain.app.com 重定向到 subdomain.app.com 并检查帐户是否存在(如果不存在则重定向到主页):

    before_filter :check_uri 

    def check_uri
      if !subdomain?
        redirect_to http_protocol + "www." + current_host + request.request_uri if !/^www\./.match(current_host)
      elsif /^www\./.match(current_host)
        redirect_to http_protocol + current_host.gsub(/^www\./, '') + request.request_uri
      elsif !account_subdomain?
        redirect_to http_protocol + "www" + current_host.gsub(account_subdomain, '')
      end
    end

上面的代码效果很好。但是在添加了这个片段之后,我的 Cucumber 测试,例如。这个:

  Scenario: Successful sign up
    Given I am an anonymous user
    And an Accept Language header
    And I am on the home page
    When I follow "Join now!"
    And ...

因错误而失败:

Webrat::NotFoundError: Could not find link with text or title or id "Join now!"
(eval):2:in `/^I follow "([^\"]*)"$/'
features/manage_users.feature:10:in `When I follow "Join now!"'

如果我评论这个 before_filter 一切正常。有人知道为什么吗?

4

1 回答 1

0

我可以发现 Webrat 非常喜欢域“example.com”并模仿它的所有步骤。

因此,如果您不使用子域,则可以在步骤中编写:

Before do
  host! "example.com"
end

并且您所有的重定向都应该有效(我不检查)。使用 Subdomain-fu 就更简单了。您应该做的一切 - 正确配置您的 subdomain-fu 配置文件:

SubdomainFu.tld_sizes = {:development => 0,
                         :test => 1, # not 0, even if you use *.localhost in development
                         :production => 1}

并在没有任何主机的情况下进行重定向测试!“example.com”

于 2009-12-28T07:58:54.337 回答