【问题标题】:Sinatra gives following error when installed on serverSinatra 安装在服务器上时出现以下错误
【发布时间】:2012-01-12 08:28:51
【问题描述】:

我正在尝试使用 rack 和 sinatra 安装一个简单的 hello world 脚本。

到目前为止,我在 localhost 上一切正常,但是当我尝试上传到我的服务器时,通过 ssh 运行时出现以下错误:

rackup config.ru

它真的只是显示“什么都没有”。我必须按 ^+C 才能中止。我试过了

rackup config.ru --debug

我明白了:

nil
Exception `LoadError' at /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36 - no such file to load -- sinatra
Exception `LoadError' at /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36 - no such file to load -- Win32API
Exception `LoadError' at /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:62 - no such file to load -- Win32API
Exception `LoadError' at /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36 - no such file to load -- mongrel
Exception `NoMethodError' at /usr/lib/ruby/1.8/rational.rb:78 - undefined method `gcd' for Rational(1, 2):Rational
Exception `LoadError' at /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/gems.rb:7 - no such file to load -- mongrel_experimental
Exception `Gem::LoadError' at /usr/lib/ruby/site_ruby/1.8/rubygems/dependency.rb:247 - Could not find mongrel_experimental (>= 1.1.5) amongst [actionmailer-3.1.3, actionpack-3.1.3, activemodel-3.1.3, activerecord-3.1.3, activeresource-3.1.3, activesupport-3.1.3, arel-2.2.1, builder-3.0.0, bundler-1.0.21, cgi_multipart_eof_fix-2.5.0, coffee-rails-3.1.1, coffee-script-2.2.0, coffee-script-source-1.1.3, daemons-1.1.0, erubis-2.7.0, eventmachine-0.12.10, execjs-1.2.9, fastthread-1.0.7, gem_plugin-0.2.3, hike-1.2.1, i18n-0.6.0, jquery-rails-1.0.19, json-1.6.3, mail-2.3.0, mime-types-1.17.2, mongrel-1.1.5, multi_json-1.0.4, polyglot-0.3.3, rack-1.3.5, rack-cache-1.1, rack-mount-0.8.3, rack-protection-1.1.4, rack-ssl-1.3.2, rack-test-0.6.1, rails-3.1.3, railties-3.1.3, rake-0.9.2.2, rdoc-3.11, rockhands-0.0.6, rubygems-update-1.8.12, sass-3.1.11, sass-rails-3.1.5, sinatra-1.3.1, sprockets-2.0.3, thin-1.3.1, thor-0.14.6, tilt-1.3.3, treetop-1.4.10, tzinfo-0.3.31]
#<Rack::ContentLength:0x2b1ed5eebe88
 @app=
  #<Rack::Chunked:0x2b1ed5eebed8
   @app=
    #<Rack::CommonLogger:0x2b1ed5eec130
     @app=
      #<Rack::ShowExceptions:0x2b1ed490bd70
       @app=
        #<Rack::Lint:0x2b1ed490bdc0
         @app=Sinatra::Application,
         @content_length=nil>,
       @template=
        #<ERB:0x2b1ed490bd20
         @filename=nil,
         @safe_level=nil,
         @src=ALL MY HTML IS HERE

如果这有帮助:

* 本地宝石 *

actionmailer (3.1.3)
actionpack (3.1.3)
activemodel (3.1.3)
activerecord (3.1.3)
activeresource (3.1.3)
activesupport (3.1.3)
arel (2.2.1)
builder (3.0.0)
bundler (1.0.21)
cgi_multipart_eof_fix (2.5.0)
coffee-rails (3.1.1)
coffee-script (2.2.0)
coffee-script-source (1.1.3)
daemons (1.1.0)
erubis (2.7.0)
eventmachine (0.12.10)
execjs (1.2.9)
fastthread (1.0.7)
gem_plugin (0.2.3)
hike (1.2.1)
i18n (0.6.0)
jquery-rails (1.0.19)
json (1.6.3)
mail (2.3.0)
mime-types (1.17.2)
mongrel (1.1.5)
multi_json (1.0.4)
polyglot (0.3.3)
rack (1.3.5)
rack-cache (1.1)
rack-mount (0.8.3)
rack-protection (1.1.4)
rack-ssl (1.3.2)
rack-test (0.6.1)
rails (3.1.3)
railties (3.1.3)
rake (0.9.2.2)
rdoc (3.11)
rockhands (0.0.6)
rubygems-update (1.8.12)
sass (3.1.11)
sass-rails (3.1.5)
sinatra (1.3.1)
sprockets (2.0.3)
thin (1.3.1)
thor (0.14.6)
tilt (1.3.3)
treetop (1.4.10)
tzinfo (0.3.31)

ruby 1.8.7 (2009-06-08 patchlevel 173) [x86_64-linux]

【问题讨论】:

  • 您发布的转储中的所有 Win32 内容是什么?我想这不是你的问题?另外 - 如果你刚开始开发一个应用程序,也许从 ruby​​ 1.9.2 开始,因为 1.8.7 在一两年内就会看起来很旧,而且转换并不总是那么容易。

标签: ruby-on-rails ruby gem sinatra rack


【解决方案1】:

您确定该应用程序无法运行吗? 对我来说rackup 默认情况下也是静音的,但该应用程序在端口 9292 上运行良好。

刚刚使用最简单的 Rack 应用在本地进行了测试:

# config.ru

run lambda { |env|
  [
    200, 
    { 'Content-Type'  => 'text/plain' },
    "Hello World"
  ]
}

哦,添加--debug 也会显示与您相同的异常,但应用运行正常。

我相信您的应用程序实际上正在运行,但由于某种原因您无法访问它。可能无法远程访问 9292 端口。

在远程机器上尝试telnet localhost 9292 以验证应用是否正常运行。你应该看到:

~$ telnet localhost 9292
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

【讨论】:

  • 它说 Trying 127.0.0.1... telnet:连接到地址 127.0.0.1:连接被拒绝 作为一个附带问题,我如何从前端访问应用程序...只是 domain.com :9292?还是它知道它只是 domain.com/ 我只是在本地对其进行了测试,但它也拒绝了它。本地作品完美
  • 在浏览器中,http://domain.com:9292 应该可以工作,假设端口在防火墙上是开放的。那么如何访问在 localhost 上运行的应用程序呢?如果它在浏览器中工作,telnet 也应该成功。
【解决方案2】:

mongrel_experimental 不是一个单独的 gem 吗?您的堆栈跟踪在第 7 行和第 8 行引用了它,但它没有在您的本地 gem 中列出。试试gem install mongrel_experimental

【讨论】:

    猜你喜欢
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多