2013-10-05 3 views
4

'get'메소드는 어디에 정의되어 있습니까? 그리고 그것은 어떤 대상에 대해서도 어떻게 불려지나요?sinatra hello world 예제는 어떻게 작동합니까?

require 'sinatra' 

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

http://www.sinatrarb.com/ 홈페이지의 예입니다.

+1

도움이 될 수 있습니다. http://stackoverflow.com/questions/6624136/how-does-sinatra-define-and-invoke-the-get-method - this this : http://stackoverflow.com/questions/ 917811/what-is-main-in-ruby 또한'get'는'private'으로 정의되어 있으므로'get' 호출 바로 전에'p self.private_methods'와 같은 것을 할 필요가 있다는 것을 알아야합니다 - 'ruby hi.rb'를 실행할 때 정의 된 출력을 볼 수 있습니다. –

답변

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의 작동 원리를 이해해야합니다. 이는 대답에서 대답 할 수있는 것보다 더 많은 것입니다.