2011-04-14 133 views
3

当我运行使用Selenium我的测试中,我的一个步骤失败和网页看起来像这样在浏览器:水豚+硒

Internal Server Error 

can't convert nil into String 
WEBrick/1.3.1 (Ruby/1.9.2/2010-08-18) at 127.0.0.1:50752 

当我与culerity运行它,而不是,我得到的输出:

Broken pipe (Errno::EPIPE) 
      /Users/yuval/.rvm/gems/ruby-1.9.2-p0/gems/culerity-0.2.15/lib/culerity/remote_object_proxy.rb:47:in `write' 
etc... 

当我运行它没有一个JS驱动程序,它并没有在这一点上失败(相反,它在使用js的时候失败了,这就是为什么我试图用js来运行它驱动程序)。

任何想法?

+0

你可以在开发模式下运行rails,这样你可以得到完整的跟踪?无法将nil转换为字符串可能在任何地方。 – 2011-04-14 18:18:32

+0

其实,它在浏览器中运行时运行得很好...... – 2011-04-14 18:23:56

回答

7

我刚刚面临同样的问题,但找到了解决方案。

如果您尝试在开发模式下使用“http://127.0.0.1:3000”打开浏览器,而不是“http:// localhost:3000”,则应该面临同样的问题。

在我的情况下,问题是由于在我的View文件中,我使用了“request.domain”,如果请求是以类似IP的格式(即“http://127.0.0.1:50752”)返回,则返回nil。

因此,如果一个地方在你的helper方法视图你有这样的事情

link_to "Click me", :host => subdomain + "." + request.domain + request.port_string 

,你可以把它改成使用的辅助方法,这样的:

link_to "Click me", :host => with_host(subdomain) 

和助手像以下:

def with_host(subdomain) 
    if request.domain.present? 
     subdomain + "." + request.domain + request.port_string 
    end 
    end 

这是最简单的解决方案,为我工作。也许,你有类似的东西。