sinatra hello world示例如何运作?

时间:2013-10-05 06:21:42

标签: ruby sinatra dsl

定义'get'方法在哪里?它如何被称为无对象?

require 'sinatra'

get '/hi' do
  "Hello World!"
end

http://www.sinatrarb.com/主页中的示例。

1 个答案:

答案 0 :(得分:4)

您没有在“无对象”上调用任何内容,而是在require 'sinatra'上调用Object并加载库(如果可以加载),这会为您提供方法get等等。

定义get是在Sinatra gem中,在lib文件夹中,在一个名为base.rb的文件中,这个代码可能在你的计算机上。

# Defining a `GET` handler also automatically defines
# a `HEAD` handler.
def get(path, opts = {}, &block)
  conditions = @conditions.dup
  route('GET', path, opts, &block)

  @conditions = conditions
  route('HEAD', path, opts, &block)
end

为了理解这里发生了什么,你需要对Ruby的工作方式有一个基本的了解。这比答案中可以或应该回答的要多一点。