unde的方法`run'for main:Object(NoMethodError)Sinatra

时间:2012-03-20 12:14:27

标签: sinatra modular

require 'sinatra/base'

class Foo < Sinatra::Base
  get('/foo') { 'foo' }
end

class Bar < Sinatra::Base
  get('/bar') { 'bar' }
end

run Rack::Cascade, [Foo, Bar]

我无法猜出这段代码有什么问题。 当我运行:ruby server.rb时,它会抛出错误

1 个答案:

答案 0 :(得分:10)

首先,最后一行应该是

run Rack::Cascade.new [Foo, Bar]

但是你只能在Rackup文件中使用它。第二,你需要创建一个名为config.ru(Rackup File)的文件,其中包含以下内容:

require './app'
run Rack::Cascade.new [Foo, Bar]

和一个名为app.rb的文件,其中包含您的实际应用:

require 'sinatra/base'

class Foo < Sinatra::Base
  get('/foo') { 'foo' }
end

class Bar < Sinatra::Base
  get('/bar') { 'bar' }
end

然后您可以通过在命令行中输入

来启动服务器
$ rackup
>> Thin web server (v1.3.1 codename Triple Espresso)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:9292, CTRL+C to stop

之后,打开第二个命令行窗口并测试您的应用程序:

$ curl 0.0.0.0:9292/foo
foo%
$ curl 0.0.0.0:9292/bar
bar%