неопределенный метод run для main: Object (NoMethodError) Sinatra - PullRequest
7 голосов
/ 20 марта 2012
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 Ответ

10 голосов
/ 20 марта 2012

Прежде всего, последняя строка должна читаться как

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%    
...