2012-06-02 53 views
1

我的應用程序在MRI 1.9.2-p290和1.9.3-p125中工作正常,但是當我更改爲jruby-1.7.0-preview1時,錯誤描述。下面是完整的錯誤:更改爲jruby,得到RuntimeError:未找到服務器處理程序(瘦)

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不已,同樣的錯誤。) 的西納特拉和薄寶石(等等)都已經安裝。事實上,除了jruby而不是mri,一切都是一樣的。

任何想法?我搜索了網頁並看到了這個錯誤,但通常是針對第三方工具,似乎沒有任何應用。

編輯:也嘗試安裝薄(這是我以前從未做過的那樣)通過

sudo apt-get install thin 

到Linux本身,但仍然得到同樣的錯誤。

+0

的'寶石list'輸出有'thin'作爲一款入門? – Kashyap

+0

是的,安裝薄; 'gem list thin' returns'thin(1.3.1)' – davej

回答

2

西納特拉1.3.2(默認)僅適用於大多MRI兼容的服務器檢查,請參閱: https://github.com/sinatra/sinatra/blob/e111243e813ede1f0f4c6918d9a8cc029e776fc3/lib/sinatra/base.rb#L1514

雜種不要在JRuby由於本機C代碼工作(雖然有功夫讓他們在JRuby上使用一些「原生」Java代碼)

您有兩個選項,可以在JRuby上調整集服務器是這樣的:

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

或與給定的處理器rackup您的應用程序rackup -s trinidad

不要忘記gem install trinidad第一(在JRuby中)

+0

嘗試將設置服務器設置爲trinidad(當然安裝後)得到了一堆消息,例如警告:無法掃描[file:/ home/jenko/Ruby/lib/extensions.jar]來自classloader hierarchy'和'SEVERE:無法處理在名爲[/]的上下文的ServletContainerInitializers的URL [jar:file:/home/jenko/Ruby/lib/jna.jar!/]中找到的JAR。 '等等。 – davej

+1

對不起,如果不詳細瞭解您的應用程序,我無法幫助您 - 取決於您如何運行JRuby。 SO最適合一次回答1個問題,您可能想嘗試一個論壇,IRC獲取一步一步的指導(或單獨發佈有關您的應用的詳細信息) – kares

+0

Concur。感謝您的努力。 – davej

相關問題