Sinatra 楽しい!
今のところあまり大きなものを作る予定がないんだけど、ひとつのファイルにたくさんのルートを書いているとごちゃごちゃしてちょっと嫌だ。
かといってコントローラーを複数に別けるのもSinatraスタイルに反しているような気がする。そこでルートの階層をわかりやすくするTIPS。
def namespace routename, &block
yield
end
yield
end
namespaceというメソッドをトップレベルに定義しておく。このメソッドはブロックの内容を実行するだけ。
get '/users' do
'Users Index'
end
get '/users/new' do
'New User'
end
get '/todos' do
'Todos Index'
end
get '/todos/:id' do
"Show Todo #{params[:id]}"
end
'Users Index'
end
get '/users/new' do
'New User'
end
get '/todos' do
'Todos Index'
end
get '/todos/:id' do
"Show Todo #{params[:id]}"
end
これが
namespace '/users' do
get '/users' do
'Users Index'
end
get '/users/new' do
'New User'
end
end
namespace '/todos' do
get '/todos' do
'Todos Index'
end
get '/todos/:id' do
"Show Todo #{params[:id]}"
end
end
get '/users' do
'Users Index'
end
get '/users/new' do
'New User'
end
end
namespace '/todos' do
get '/todos' do
'Todos Index'
end
get '/todos/:id' do
"Show Todo #{params[:id]}"
end
end
こう書けるようになる。
少し見やすい
関連記事