2013-06-15 2 views
5

Sinatra 앱에서 Modular가 무엇인지에 대한 설명을 간소화 할 수 있는지 궁금합니다. sinatra에는 고전적인 설정과 모듈 식 설정이 있지만 문서를 읽는 것으로부터 나는 Modular가 무엇을하고 있는지 알 수 없습니다.Sinatra의 Modular는 무엇을 의미합니까?

가능하면 기본 수준의 설명을하고 싶습니다. 왜 이것을 profile.rb에 두는 것이 응용 프로그램의 설정을 변경하게됩니다 (해당되는 경우). 제가 초보자라는 것을 명심하십시오, 그래서 간단하고 철저한 설명이 가장 좋습니다!

require 'rubygems' 
require 'sinatra' 

class Profile < Sinatra::Base 

get '/' do 
erb :index 
end 


end 

답변

3

그것은 당신이 묶여 예를 들어 함께 Rack#map를 사용하여, 같은 슈퍼 응용 프로그램 내에서 독립적 인 모듈과 같은 당신의 질문에 설명 된 것과 같은 하나 이상의시나 애플 리케이션을 만들 수 있다는 것을 의미한다 :

# config.ru 

require 'app1' 
require 'app2' 

run Rack::Builder.new { 
    map "/app1" do 
    run App1.new 
    end 

    map "/app2" do 
    run App2.new 
    end 
} 
+0

그래서 내가 말한대로 슈퍼 응용 프로그램 내에서 두 개의 응용 프로그램을 실행하고 싶지 않으면 고전적인 설정과 비교하여 사용하는 것이 더 좋습니다. – Richlewis

+0

아무런 혜택이 없습니다. 제쳐두고, Sinatra 앱의 두 가지 뛰어난 예제가 필요하다면 [Github Services] (https://github.com/github/github-services)를 참조하십시오 (메모리가 작동하는 경우 Sinatra의 의미에서 모듈화되지 않음).하지만 가장 확실하게 실제로 모듈러)와 [Padrino] (http://www.padrinorb.com) (모든 수준에서 모듈 식). –

2

개념적 차원에서 모듈러를 빌딩 블록으로 생각할 수 있습니다. 기존 앱을 가져 와서 각 블록의 기능을 기반으로 임의의 수의 블록으로 잘라낼 수 있다면 모듈 식 디자인 일 것입니다. 그것을 생각하는 또 다른 방법은 루비의 일반적인 믹스 닝과 같습니다. 여러 곳에서 동일한 메소드를 정의하는 대신 모듈에서 메소드를 정의한 다음 메소드가 필요한 모든 위치에 모듈을 포함시킬 수 있습니다. Sinatra와 동일한 방식으로 모듈 식을 생각할 수 있지만, 메서드 대신에 모듈 형 응용 프로그램을 사용하여 동일한 응용 프로그램이나 다른 응용 프로그램의 다른 인스턴스에서 사용할 수 있습니다. 따라서 본질적으로 재사용 가능한 구성 요소를 구축합니다.

동일한 앱의 여러 인스턴스에 대해 구성 요소를 사용하는 좋은 예는 stackoverflow question을 참조하십시오.

예를 들어, 앱을 만들 때 목표가 무엇인지에 따라 다릅니다. Sinatra :: Base를 사용할 때 대부분의 옵션은 기본적으로 비활성화되어 있으므로 configure the options을 사용해야합니다. 또한, 귀하의 예에서는 '시네 트라'를 요구하는 대신 '시낫 /베이스'를 요구해야합니다. 기본적으로 Sinatra :: Base는 "빈 슬레이트"이며 대부분의 옵션은 기본적으로 비활성화되어 있습니다.

관련 문제