1

私のアプリはMRI1.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を試しましたが、同じエラーです。)シナトラと薄い宝石(とりわけ)はすでにインストールされています。実際、mriの代わりにjrubyを除いて、すべてが同じです。

何か案は?Webを検索してこのエラーを確認しましたが、通常はサードパーティのツール用であり、何も当てはまらないようです。

編集:また、Linux自体にthin(これまで行う必要はありませんでした)を経由してインストールしようとしました

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

thinmongrelは、ネイティブ C コードが原因で JRuby では動作しません (ただし、JRuby で「ネイティブ」Java コードを使用するようにする努力はあります)。

JRuby 上で set server を調整する 2 つのオプションがあります。

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

または、指定されたハンドラーでアプリケーションをラックアップしますrackup -s trinidad

最初に忘れないでくださいgem install trinidad(JRubyの下)

于 2012-06-04T07:44:26.330 に答える