1

我的应用程序在 MRI 1.9.2-p290 和 1.9.3-p125 中运行良好,但是当我更改为 jruby-1.7.0-preview1 时,我得到了描述的错误。这是完整的错误:

RuntimeError: Server handler (thin) not found.
  detect_rack_handler at /home/qry_dev/.rvm/gems/jruby-1.7.0.preview1/gems/sinatra-1.3.2/lib/sinatra/base.rb:1402
             run! at /home/qry_dev/.rvm/gems/jruby-1.7.0.preview1/gems/sinatra-1.3.2/lib/sinatra/base.rb:1293
           (root) at /home/qry_dev/Ruby/query_engine/query_webserver.rb:320
             load at org/jruby/RubyKernel.java:1017
           (root) at -e:1

(我已经尝试过 jruby-1.6.6,同样的错误。)已经安装了 sinatra 和 Thin gems(以及其他)。事实上,除了 jruby 而不是 mri,一切都一样。

有任何想法吗?我在网上搜索并看到了这个错误,但它通常是针对 3rd 方工具的,似乎没有什么适用的。

编辑:还尝试通过安装thin(我以前从未做过)到linux本身

sudo apt-get install thin

但仍然得到同样的错误。

4

2 回答 2

2

sinatra 1.3.2(默认)仅检查大多数兼容 MRI 的服务器,请参阅: https ://github.com/sinatra/sinatra/blob/e111243e813ede1f0f4c6918d9a8cc029e776fc3/lib/sinatra/base.rb#L1514

由于本机 C 代码, thinmongrel不能在 JRuby 上工作(尽管努力让他们在 JRuby 上使用一些“本机”Java 代码)

在 JRuby 上,您有两个选项可以调整设置的服务器,例如:

set :server, %w[trinidad webrick] if defined?(JRUBY_VERSION)

或使用给定的处理程序构建您的应用程序rackup -s trinidad

不要忘记gem install trinidad首先(在 JRuby 下)

于 2012-06-04T07:44:26.330 回答
0

您可以安装将自动拾取的thin服务器。sinatra要安装thin,您可以执行以下命令

gem install thin
于 2021-01-26T08:57:40.383 回答