padrino启动时的notmethod错误

时间:2010-12-26 23:23:47

标签: sinatra padrino

不幸的是,在开始时迷路了。使用官方指南http://www.padrinorb.com/

创建了第一个test_app

当尝试“padrino start”应用程序启动时,服务器在控制台中运行良好,但是当我尝试在borwser中看到它时会出现以下错误消息:

/ admin /的NoMethodError 未定义的方法`匹配?'为零:NilClass file:routing.rb location:route line:66

此外,我看不到favicon,而控制台说它无法找到它。

(尝试使用Thin和Webrick。 我正在使用Ubuntu和RVM Ruby1.9 Gem 1.3.7 Rails3。 更新了Sinatra和Padrino宝石,进行了清理。)

非常感谢, gezope

2 个答案:

答案 0 :(得分:6)

更好的解决方案可能是将您正在使用的sinatra版本固定到与sinatra 0.9.19兼容的版本上。 Sinatra 1.1.0对我来说很好。为此,请将此行添加到您的Gemfile:

gem 'sinatra', '1.1.0'

并致电

bundle update

你可以从那里使用bundle exec padrino

答案 1 :(得分:1)

这是一个可以解决它的快速黑客攻击。它应该可以在框架中解决,但至少你现在可以解决它,以便你可以继续工作:

在我的系统上,我修改了以下文件(假设您正在使用bundler)(注意:当您单击Padrino生成的错误页面顶部的“展开”时,列出了文件的完整路径): file:.bundle / ruby​​ / 1.8 / gems / padrino-core-0.9.19 / lib / padrino-core / application / routing.rb

原始(这将失败)代码:

   def route
      match.matched? ? match.path.route : nil  # NOTE: this is line 66 in routing.rb
    end

新代码(hacky,但它可以工作,大概需要一分钟)

   def route
      (!match.nil? && match.matched?) ? match.path.route : nil
    end
祝你好运!