
응! 최소한의 노력으로 Mruby에서 선반 애플리케이션을 신속하게 생성하기위한 DSL입니다.
# mrblib/your-mrbgem.rb
extend Yeah :: DSL | extend Yeah :: DSL
|
set port : 3000 | opt ( :port ) { | port | set port : port }
|
get '/hi/{name}' do | name | | get '/hi' do
"Hi #{ name } " | "Hi #{ params [ 'name' ] . join ( ' and ' ) } "
end | end $ your-mrbgem & | $ your-mrbgem --port 8080 &
Starting application at http://localhost:3000 | Starting application at http://localhost:8080
|
$ curl ' localhost:3000/hi/Ben ' | $ curl ' localhost:8080/hi?name=Tom&name=Jerry '
Hi Ben | Hi Tom and Jerry 아래 줄을 build_config.rb 에 추가하십시오.
MRuby :: Build . new do | conf |
# ... (snip) ...
conf . gem 'mruby-yeah'
end 또는이 라인을 enciplation의 mrbgem.rake 에 추가하십시오.
MRuby :: Gem :: Specification . new ( 'your-mrbgem' ) do | spec |
# ... (snap) ...
spec . add_dependency 'mruby-yeah'
end 예! 각 경로는 블록과 관련이 있습니다.
post '/' do
.. create something ..
end경로는 정의 된 순서대로 일치합니다. 요청과 일치하는 첫 번째 경로가 호출됩니다.
후행 슬래시가있는 경로는 다음과 같은 것과 다르지 않습니다 .
get '/foo' do
# Does match "GET /foo/"
end root 사용하여 기본 입력 점을 지정하십시오.
# Redirect "GET /" to "GET /public/index.html"
root '/public/index.html' 경로 패턴에는 params Hash를 통해 액세스 할 수있는 이름의 매개 변수가 포함될 수 있습니다.
# matches "GET /hello/foo" and "GET /hello/bar"
get '/hello/{name}' do
# params[:name] is 'foo' or 'bar'
"Hello #{ params [ :name ] } !"
end블록 매개 변수를 통해 이름이 지정된 매개 변수에 액세스 할 수도 있습니다.
# matches "GET /hello/foo" and "GET /hello/bar"
get '/hello/{name}' do | name |
# params[:name] is 'foo' or 'bar'
# name stores params[:name]
"Hello #{ name } !"
end경로는 쿼리 매개 변수를 사용할 수도 있습니다.
# matches "GET /posts?title=foo&author=bar"
get '/posts' do
title = params [ 'title' ]
author = params [ 'author' ]
end정규 표현과 일치하는 경로 :
get '/blog/post/{id:\d+}' do | id |
post = Post . find ( id )
end정규 표현에 대한 지원은 mruby-yea 전에 mruby-regexp-pcre를 설치해야합니다!
경로는 모든 HTTP 방법과 일치하도록 정의 될 수도 있습니다.
# matches "GET /" and "PUT /" and ...
route '/' , R3 :: ANY do
request [ Shelf :: REQUEST_METHOD ]
end마지막으로 추가 된 모든 HTTP 경로 목록을 얻을 수 있습니다.
routes # => ['GET /blog/post/{id}'] 각 라우팅 블록은 Yeah::Controller 인스턴스의 범위 내에서 호출됩니다. 클래스는 request , params , logger 및 render 와 같은 메소드에 대한 액세스를 제공합니다.
request 선반 요청을 반환하며 기본적으로 해시입니다. get '/' do
request # => { 'REQUEST_METHOD' => 'GET', 'REQUEST_PATH' => '/', 'User-Agent' => '...' }
endparams 쿼리 매개 변수를 반환하고 이름이 지정된 URL 매개 변수를 반환합니다. 쿼리 매개 변수는 문자열 키에 의해 액세스 할 수 있으며 기호별로 이름이 지정됩니다. # "GET /blogs/b1/posts/p1?blog_id=b2"
get '/blogs/{blog_id}/posts/{post_id}' do
params # => { blog_id: 'b1', post_id: 'p1' }
endlogger 쿼리 매개 변수와 이름이 지정된 URL 매개 변수를 반환합니다. 쿼리 매개 변수는 문자열 키에 의해 액세스 할 수 있으며 기호별로 이름이 지정됩니다. 필요한 미들웨어를 포함하는 것을 잊지 마십시오! use Shelf :: Logger
get '/' do
logger # => <Logger:0x007fae54987308>
endrender 잘 형성된 선반 응답을 반환합니다. 이 방법은 Varoius 종류의 호출을 허용합니다. get '/500' do | get '/yeah' do
render 500 | render html : '<h1>Yeah!</h1>'
end | end
|
get '/say_hi' do | post '/api/stats' do
render 'Hi' | render json : Stats . create ( params ) , status : 201 , headers : { ... }
end | end
|
get '/say_hello' do | get '/' do
'Hello' | render redirect : 'public/index.html'
end | end 경로를 실행하는 코드 블록 대신 컨트롤러와 레일과 유사한 동작도 허용합니다.
class GreetingsController < Yeah :: Controller
def greet ( name )
render "Hello #{ name . capitalize } "
end
end
Yeah . application . routes . draw do
get 'greet/{name}' , to : 'greetings#greet'
end
Yeah . application . configure :production do
log_folder '/logs' , 'iss.log' , 'iss.err'
end
Yeah . application . run! port : 3000 응! 작은 선택 파서와 함께 배송됩니다. 각 옵션은 블록과 관련이 있습니다.
# matches "your-mrbgem --port 80" or "your-mrbgem -p 80"
opt :port , :int , 8080 do | port |
# port is 80
set :port , port
endOpts는 기본값을 가질 수 있습니다. 블록은 어떤 경우에도 명령 줄 값, 기본값 또는 NIL 만으로 호출됩니다.
그러나 때로는 단일 옵션에 대한 메타 정보 만 인쇄 한 다음 서버를 시작하지 않고 종료하는 것입니다.
# matches "your-mrbgem --version" or "your-mrbgem -v"
opt! :version do
# prints 'v1.0.0' on STDOUT and exit
'v1.0.0'
end 모든 환경에서 스타트 업에서 한 번 실행하십시오.
configure do
# setting one option
set :option , 'value'
# setting multiple options
set a : 1 , b : 2
# same as `set :option, true`
enable :option
# same as `set :option, false`
disable :option
end 환경 ( SHELF_ENV 환경 변수)이 production 으로 설정된 경우에만 실행하십시오.
configure :production do
...
end 환경이 development 또는 test 로 설정된 경우에만 실행됩니다.
configure :development , :test do
...
end settings 통해 해당 옵션에 액세스 할 수 있습니다.
configure do
set :foo , 'bar'
end
get '/' do
settings [ :foo ] # => 'bar'
end 응! 선반에 타기, Mruby 웹 프레임 워크를위한 최소 표준 인터페이스. 애플리케이션 개발자를위한 Shelf의 가장 흥미로운 기능 중 하나는 서버와 애플리케이션 모니터링 및/또는 HTTP 요청/응답을 조작하여 다양한 유형의 공통 기능을 제공하는 "미들웨어"에 대한 지원입니다.
Sinatra는 최상위 use 방법을 통해 건물 랙 미들웨어 파이프 라인을 건물로 만듭니다.
use Shelf :: CatchError
use MyCustomMiddleware
get '/hello' do
'Hello World'
end use 의 의미는 선반 :: Builder DSL에 대해 정의 된 의미와 동일합니다. 예를 들어, 사용 방법은 다중/가변 Args와 블록을 허용합니다.
use Shelf :: Static , urls : [ '/public' ] , root : ENV [ 'DOCUMENT_ROOT' ]선반은 로깅, 디버깅 및 URL 라우팅을위한 다양한 표준 미들웨어로 배포됩니다. 응! 구성을 기반으로 이러한 많은 구성 요소를 자동으로 사용하므로 일반적으로 명시 적으로 사용할 필요가 없습니다.
응! 선반 호환 웹 서버와 함께 작동합니다. 지금은 Mruby-Simplehttpserver 와 Mruby-Heeler 입니다.
set :server , 'simplehttpserver' # => Default그러나 다른 서버의 핸들러를 등록 할 수 있습니다. 자세한 내용은 여기를 참조하십시오.
레포를 복제하십시오 :
$ git clone https://github.com/katzer/mruby-yeah.git && cd mruby-yeah/
소스 컴파일 :
$ rake compile
테스트 실행 :
$ rake test
https://github.com/katzer/mruby-yeah에서 버그 보고서 및 풀 요청은 환영합니다.
git checkout -b my-new-feature )git commit -am 'Add some feature' )git push origin my-new-feature )MGEM은 MIT 라이센스의 조건에 따라 오픈 소스로 제공됩니다.
만들어 졌어? 라이프 치히에서
© 2017 Applant Gmbh