sinatra 예제

시나트라의 소스 코드는 거의 모두 base.rb에 있습니다. 그것은 조밀, 하지만이 게시물을 읽은 후 더 이해할 수. 나는 전화로 시작했습니다! 방법; 또한 랙::응답의 하위 클래스인 응답 클래스를 체크 아웃합니다. 한 가지 명심해야 할 점은 시나트라가 클래스 기반이며 낸시는 객체 기반이라는 점입니다. Nancy가 인스턴스 수준 get 메서드를 사용하는 경우 Sinatra는 클래스 수준 get 메서드를 사용합니다. Sinatra는 응용 프로그램 아키텍처를 부과하지 않지만 많은 가능성을 열어줍니다. 예를 들어 상속을 사용하여 보다 복잡한 컨트롤러 아키텍처를 빌드할 수 있습니다. Rails 컨트롤러에서 영감을 얻고 다른 모든 컨트롤러가 상속하는 일반 응용 프로그램 컨트롤러로 시작해 보겠습니다. 시나트라를 시작하려면 루비를 설치해야 합니다. 나는 이것을 위해 RVM을 사용하는 것이 좋습니다 (도움이 필요한 경우 글렌 굿리치의이 훌륭한 가이드를 따를 수 있습니다). 루비와 루비젬스가 성공적으로 설치되면 시나트라를 설치할 차례입니다. 이것은 Rubygems를 사용하여 수행되며 명령줄을 열고 입력하는 경우입니다: 설정뿐만 아니라 Sinatra 클래스의 모든 측면은 하위 클래스에 의해 상속됩니다.

여기에는 정의된 경로, 모든 오류 처리기, 확장, 미들웨어 등이 포함됩니다. 그러나 가장 중요한 것은 메서드가 상속되는 방식만 상속된다는 것입니다. 해당 클래스를 하위 클래스로 분류한 후 클래스에 대한 경로를 정의해야 하는 경우 하위 클래스에서도 경로를 사용할 수 있습니다. 그러나 하위 클래스에 정의된 메서드와 마찬가지로 하위 클래스의 경로는 정의된 시기에 관계없이 수퍼클래스에 정의된 경로 앞에 옵니다. 하위 클래스의 데모는 예제 4-10을 참조하십시오. 3장에서는 일반적인 시나트라 응용 프로그램이 실제로 시나트라:::Base의 하위 클래스인 시나트라::Application에 살고 있음을 보았습니다. 분명히, 우리가 최상위 DSL을 사용하지 않는 경우, 그냥 `시나트라 / 베이스`를 필요로 할 수있다. 그리고 실제로 그렇게하는 것이 일반적인 관행이라는 사실은 놀랄 일이 아닙니다.

이렇게 하면 일반적으로 Sinatra::Application을 사용하지 않고 대신 Sinatra::Base의 하위 클래스를 만듭니다. 이제 양식이 게시된 후 양식을 처리하는 처리기가 필요합니다. 코드를 살펴보면 action 특성은 양식에 `/` URL에 자신을 제출하도록 지시하고 메서드 특성은 POST 메서드를 사용하도록 지시합니다. 이것은 내가 Sinatra의 킬러 기능 중 하나라고 생각하는 것에 매우 잘 연결됩니다 – 요청 방법이 처리기에 지정된 방식. 다음 처리기를 `main.rb`에 추가: 이 핸들러를 사용하여 새 Sinatra 응용 프로그램을 동적으로 생성할 수 있습니다. 응용 프로그램의 반환 값은 랙 사양의 필수적인 부분입니다. 랙은 당신이 반환 할 수있는 것에 까다롭습니다. 반면시, 시나트라는 값을 반환할 때 용서합니다. Sinatra 경로는 일반적으로 블록의 마지막 줄에 반환되는 문자열 값을 가지지만 랙 사양에 부합하는 값일 수도 있습니다.