【问题标题】:Error when starting Sinatra: "tried to create Proc object without a block"启动 Sinatra 时出错:“试图创建没有块的 Proc 对象”
【发布时间】:2011-05-02 04:27:11
【问题描述】:

我对 ruby​​ / rails 非常陌生,并且有一个我无法解决的问题,但我觉得解决起来应该相对简单。

命令:

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

我已更新所有 gem,但仍然出现相同的错误。如果需要,我也可以发布宝石列表。

【问题讨论】:

  • 请注意,这与 Rails 无关,Rails 是一个与 Sinatra 完全不同的“竞争”框架。

标签: ruby sinatra


【解决方案1】:

据我所知,我以前也遇到过这种情况,Sinatra 的 v1.2.5 是问题所在。 v1.2.3 不行,试试看

gem install sinatra -v 1.2.3

要安装以前的版本,然后添加:

gem 'sinatra', '=1.2.3'

require 语句之前。

This is documented 作为一个问题。


编辑:Sinatra 刚刚遇到了一个新版本 1.2.6,它解决了这个问题。使用gem update sinatra,后跟gem uninstall sinatra -v 1.2.5 删除旧的、有缺陷的版本。

【讨论】:

  • github.com/sinatra/sinatra/issues/258 - 我刚刚对另一个问题给出了几乎相同的答案。
  • 升级到新的 1.2.6 应该可以解决这个问题。 (降级不再合适。)
  • 谢谢 Tin Man 和 Phrogz,它们都有效,但幸运的是,当升级可用时,我现在正在挖掘。 :)
猜你喜欢
  • 1970-01-01
  • 2023-03-19
  • 2013-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-09
  • 1970-01-01
  • 2022-12-09
相关资源
最近更新 更多