sinatra 예제

우리는 결과에 들어가기 전에, 우리는 시나트라의 두 가지 스타일에 대해 이야기해야한다 : 고전과 모듈. 위의 고전적인 스타일의 예입니다, 그것은 하나의 루비 프로세스 당 하나의 시나트라 응용 프로그램입니다. 모듈 식 스타일은 루비 프로세스 당 여러 Sinatra 앱을 가질 수있는 곳이며 이름에서 알 수 있듯이 더 모듈식인 것처럼 모든 것이 위와 같은 하나의 글로벌 네임 스페이스에 있어야하는 것은 아닙니다. 아래 예제에서는 응용 프로그램의 경로를 정의하는 클래스를 정의합니다. 결국, 우리는 매우 간단한 도구 집합과 기능을 잃지 않고 전체 API를 구축했습니다. 제한된 수의 종속성은 응용 프로그램이 훨씬 더 빠르게 로드되고 시작되도록 하며 Rails 기반보다 훨씬 적은 메모리 공간을 확보할 수 있도록 합니다. 따라서 다음에 루비의 새 API 작업을 시작할 때 이러한 사용 사례에 매우 강력한 도구이므로 Sinatra 및 속편을 사용하는 것이 좋습니다. 이제 도우미 매니페스트 파일 (도우미 / init.rb)에 요구 문을 추가하여이 파일을로드하고 인증을 호출하는 것입니다! 요청을 처리하기 전에 실행됩니다 Sinatra의 전에 후크의 방법. 오류 처리기에 사용되는 제목 메서드를 발견했을 수 있습니다. Sinatra의 일부가 아니므로 예제 4-12와 같이 응용 프로그램 도우미에서 구현해 보겠습니다. 다음으로 응용 프로그램에 대한 데이터베이스를 준비해야 합니다. 데이터베이스를 준비하는 방법에는 여러 가지가 있지만 속편을 사용하므로 마이그레이션기를 사용하여 데이터베이스를 사용하는 것이 당연합니다. 속편에는 정수와 타임스탬프 기반의 두 가지 마이그레이션기 유형이 함께 제공됩니다.

각각의 장점과 단점이 있습니다. 이 예제에서는 마이그레이션 파일을 타임스탬프로 접두사에 고정해야 하는 속편의 타임스탬프 마이그레이션기를 사용하기로 결정했습니다. 타임스탬프 마이그레이션기는 매우 유연하며 다양한 타임스탬프 형식을 사용할 수 있지만 연도, 월, 일, 시간, 분 및 초로 구성된 형식만 사용합니다. 다음은 두 가지 마이그레이션 파일입니다: Sinatra는 실제로 고전적인 스타일로 객체를 파괴하지 않기 위해 몇 가지 농구를 뛰어 넘습니다. 예를 들어 method_missing 프록시를 구현하는 경우 (즉, method_missing으로 모든 메서드를 catch하고 해당 호출을 다른 개체에 위임)하고 respond_to를 구현하는 경우? 제대로, 시나트라 DSL 메서드가 트리거되지 않습니다 및 method_missing 대신 호출됩니다. Sinatra는 응용 프로그램 아키텍처를 부과하지 않지만 많은 가능성을 열어줍니다. 예를 들어 상속을 사용하여 보다 복잡한 컨트롤러 아키텍처를 빌드할 수 있습니다.