【问题标题】:Sinatra not running on localhostSinatra 未在本地主机上运行
【发布时间】:2016-02-06 05:21:10
【问题描述】:

我有许多过去运行良好的 Sinatra 应用程序。现在它们都不会加载到本地主机。我在浏览器中输入了相同的信息来访问它们(http://localhost:4567),但什么也没出现。该页面仅挂起很长时间......超过五分钟。通常我会杀死进程来结束它。

我在 Webrick 和 Thin 上试过这个,但都没有成功。这是 Webrick 的最新输出:

[2016-02-06 00:13:07] INFO  WEBrick 1.3.1
[2016-02-06 00:13:07] INFO  ruby 2.0.0 (2014-11-13) [x86_64-darwin14.0.0]
== Sinatra (v1.4.7) has taken the stage on 4567 for development with backup from WEBrick
[2016-02-06 00:13:07] INFO  WEBrick::HTTPServer#start: pid=8118 port=4567
^C== Sinatra has ended his set (crowd applauds)
[2016-02-06 00:13:41] INFO  going to shutdown ...

在此之后关闭也挂起,我通常使用 CTRL-Z,然后 kill -9 [pid] 来停止它。

我已经在 SO 上四处寻找答案,但我仍然卡住了。我无法在 /var/log 文件夹中找到 Webrick 日志,所以我不确定从哪里开始查找错误。这让我发疯了,因为我知道我的应用程序之前运行良好,我需要快速编写一个新的 Sinatra 应用程序。

唯一改变的是我将 gem 更新到 2.5.0...这可能是问题所在,但我无法找到其他人遇到该 gem 问题的任何证据。

以前有人遇到过这种情况吗?如果没有,有什么建议可以在哪里看到错误日志?

【问题讨论】:

  • 对 Sinatra 一无所知,但也许您运行的是恶意服务器?请参阅this answer 这可能会有所帮助
  • 嗨,谢谢。是的,我确实尝试过 grepping Ruby 进程并杀死它们。到目前为止,这还没有解决它!但我会仔细看看,也许我错过了一些东西。干杯。
  • 你在使用 bundle 来管理依赖吗?
  • 现在,我正处于这个新应用程序的开始阶段,它所拥有的只是一个类似于下面第一个答案的文件(一种“Hello world”)。我确实将 Sinatra 作为依赖项,并且文件需要它。所以我不知道在这种情况下依赖关系是问题所在。谢谢。
  • 您将什么 gem 更新到 2.5.0?最新的 sinatra 是 1.4.7

标签: ruby sinatra webrick


【解决方案1】:

让我们从简单的开始,当您在test.rb 中编写并运行以下应用程序时会发生什么:

require 'sinatra'

get '/hi' do
    "Hello World!"
end

然后是gem install sinatraruby test.rb。您应该会看到以下内容:

== Sinatra (v1.4.7) has taken the stage on 4567 for development with backup from Thin
Thin web server (v1.6.3 codename Protein Powder)
Maximum connections set to 1024
Listening on localhost:4567, CTRL+C to stop

现在在第二个终端运行curl:

$ curl -XGET localhost:4567
<!DOCTYPE html>
<html>
<head>
  <style type="text/css">
  body { text-align:center;font-family:helvetica,arial;font-size:22px;
    color:#888;margin:20px}
  #c {margin:0 auto;width:500px;text-align:left}
  </style>
</head>
<body>
  <h2>Sinatra doesn&rsquo;t know this ditty.</h2>
  <img src='http://localhost:4567/__sinatra__/404.png'>
  <div id="c">
    Try this:
    <pre>get &#x27;&#x2F;&#x27; do
  &quot;Hello World&quot;
end
</pre>
  </div>
</body>
</html>

您可以这样做并发布 curl 会话的结果吗?

【讨论】:

  • 这就是我在 cURL 会话中得到的回复:➜ ~ curl -XGET localhost:4567 curl: (52) Empty reply from server 我觉得我在这里服用了疯狂的药丸!到底是怎么回事?我确实重新启动了没有修复它的计算机。
  • 本地主机是否绑定到 127.0.0.1?你能在运行 sinatra 时检查你的“/etc/hosts”并给出一个“lsof -i”吗?
猜你喜欢
  • 1970-01-01
  • 2021-09-07
  • 2016-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-31
  • 1970-01-01
  • 2014-12-04
相关资源
最近更新 更多