Sinatra,模块化风格。我做错了什么?

时间:2011-03-22 19:44:55

标签: ruby sinatra

我使用Sinatra模块化风格,我不知道会发生什么变质。我搜索谷歌但没有找到任何东西

require 'sinatra/base'

class App < Sinatra::Base

  get '/' do
    haml '%h1 Test'
  end

end

run App

请参阅test.rb:12:在<main>': undefined method run'中对于main:Object(NoMethodError) 出了什么问题?

2 个答案:

答案 0 :(得分:10)

你是通过ruby -rubygems hi.rb运行它(假设这段代码在hi.rb中)。如果是这样,您不需要运行App。除非你通过在Sinatra上构建的另一个框架运行它。

也可能想要包含haml ...

你有一个config.ru:

# config.ru
require 'my_app'
run MyApp

和my_app.rb:

# my_app.rb
require 'sinatra/base'
require 'haml'

class MyApp < Sinatra::Base

get('/') { haml '%h1 Test' }

  # start the server if ruby file executed directly
  run! if app_file == $0
end

然后在运行my_app.rb的文件夹中,在localhost上启动应用程序:4657:

rackup -p 4567

答案 1 :(得分:2)

关于上面显示以下错误的评论:

`start_tcp_server': no acceptor (RuntimeError)

当您尝试绑定到已绑定的端口时,会出现此信息。尝试使用其他端口号应该可以解决。