2011-04-30 53 views
3

我對ruby/rails非常陌生,並且遇到了一個我一直無法弄清的問題,但覺得它應該是相對簡單的修復。啓動Sinatra時出錯:「試圖創建沒有塊的Proc對象」

命令:

ruby app.rb 

錯誤:

/Library/Ruby/Gems/1.8/gems/sinatra-1.2.5/lib/sinatra/base.rb:1144:in `define_method': tried to create Proc object without a block (ArgumentError) 
    from /Library/Ruby/Gems/1.8/gems/sinatra-1.2.5/lib/sinatra/base.rb:1144:in `compile!' 
    from /Library/Ruby/Gems/1.8/gems/sinatra-1.2.5/lib/sinatra/base.rb:1129:in `route' 
    from /Library/Ruby/Gems/1.8/gems/sinatra-1.2.5/lib/sinatra/base.rb:1111:in `get' 
    from /Library/Ruby/Gems/1.8/gems/sinatra-1.2.5/lib/sinatra/base.rb:1474:in `send' 
    from /Library/Ruby/Gems/1.8/gems/sinatra-1.2.5/lib/sinatra/base.rb:1474:in `get' 
    from app.rb:4 

app.rb內容:

require 'rubygems' 
require 'sinatra' 

get '/' do 
    "Hello World" 
end 

我已經更新所有的寶石,仍然會有同樣的錯誤。如果需要,我可以發佈寶石列表。

+0

請注意,這與Rails無關,這是一個完全不同的,與Sinatra「競爭」的框架。 – Phrogz 2011-05-01 20:27:17

回答

3

從我可以告訴,我以前遇到過,Sinatra的v1.2.5是問題所在。在require語句之前

gem 'sinatra', '=1.2.3' 

:V1.2.3沒有做到這一點,所以儘量

gem install sinatra -v 1.2.3 

安裝以前的版本,然後再添加。

This is documented作爲一個問題。


編輯:Sinatra只是碰到一個新的版本,1.2.6,它解決了這個問題。使用gem update sinatra,然後使用gem uninstall sinatra -v 1.2.5刪除舊的,越野車版本。

+0

https://github.com/sinatra/sinatra/issues/258 - 我剛剛給出了與另一個問題相同的答案。 – matt 2011-05-01 00:37:35

+2

升級到新的1.2.6應該解決這個問題。 (降級不再合適。) – Phrogz 2011-05-01 20:32:12

+0

謝謝Tin Man和Phrogz,這兩種方法都很有效,但幸運的是我現在只需在升級時進行挖掘。 :) – jeffreynolte 2011-05-01 22:45:24

相關問題