Heroku App:RestClient :: InternalServerError

时间:2011-08-10 04:11:15

标签: ruby-on-rails-3 heroku rest-client

我在myapp.heroku.com上构建了一个Web应用程序,其中“myapp”实际上是heroku生成的随机名称。当我用我的网络浏览器点击它时,它可以工作。当我用Ruby Rest-Client(gem rest-client v1.6.3)点击它时,如下所示:

irb(main):024:0> response=RestClient.get "http://myapp.heroku.com"

通过以下方式解决:

RestClient::InternalServerError: 500 Internal Server Error
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rest-client-    1.6.3/lib/restclient/abstract_response.rb:48:in `return!'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rest-client-1.6.3/lib/restclient/request.rb:228:in `process_result'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rest-client-1.6.3/lib/restclient/request.rb:176:in `block in transmit'
    from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:627:in `start'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rest-client-1.6.3/lib/restclient/request.rb:170:in `transmit'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rest-client-1.6.3/lib/restclient/request.rb:64:in `execute'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rest-client-1.6.3/lib/restclient/request.rb:33:in `execute'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rest-client-1.6.3/lib/restclient.rb:68:in `get'
    from (irb):24
    from C:/Ruby192/bin/irb:12:in `<main>'

当我使用具有更好的已知网址的同一客户端时,例如“http://www.google.com”或“http://www.heroku.com”,它工作正常,网址的内容下载,一切都很好。当我使用与“http:// localhost:3000”运行的应用程序版本相同的客户端时,它也可以正常工作。

我的休息客户端客户端是否遗漏了某些东西,导致它无法从heroku.com上托管的应用程序中获取数据?

============编辑====其他信息===========

睡觉后,我试过了:

irb> require 'net/http'
irb> NET::HTTP.get_print URI.parse "http://myapp.heroku.com"

工作得很好。

2 个答案:

答案 0 :(得分:0)

这里可能有很多原因;

如果您使用的是单个dyno,它会发出请求,但之后它会返回到网站,但是没有可用于处理请求的dyno,因此它会超时。

有些情况下服务器无法在其外部地址上与自己对话,但我认为情况可能并非如此,更可能是dyno问题?

约翰。

答案 1 :(得分:0)

我傻了。

检查“heroku日志”后,我在代码中发现了一个导致500错误的异常。例外是因为heroku中的PG数据库与我的本地SQLite3数据库之间存在类型转换差异。一旦我修好了,一切都进展顺利。我怀疑500错误也导致我的网站暂时无法访问,这就是我的网站托管的子域名没有返回任何内容的原因。

故事的道德?休息客户工作。 Heroku工作。 Rest-client(IMO)不应该为500抛出异常,而只是返回HTTP响应代码并让应用程序处理它。但是,如果我发牢骚,我还要掏腰包。修复...