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

max*_*fry 2 ruby sinatra

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

require 'sinatra/base'

class App < Sinatra::Base

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

end

run App
Run Code Online (Sandbox Code Playgroud)

并且看一下test.rb:12:在<main>': undefined method运行'for main:Object(NoMethodError)出了什么问题?

Jar*_*red 10

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

也许可能想要包括haml ...

你有一个config.ru:

# config.ru
require 'my_app'
run MyApp
Run Code Online (Sandbox Code Playgroud)

和一个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
Run Code Online (Sandbox Code Playgroud)

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

rackup -p 4567
Run Code Online (Sandbox Code Playgroud)