sinatraでアプリ書くために基本処理まとめ
sinatraでコード書くために基本的な処理書いた
Railsチュートリアルをボツボツ読んでましたが、Ruby自体への理解のなさに嫌気がさし舵を切り直して言語限定の学習に移行、パーフェクトRubyなんかを読み進めてますが肝心のアプリが手付かずなのでいろいろ考えた結果sinatraでコード書くことにしました。
きっかけはこの記事
今すぐ辞めて欲しい、「Ruby on Rails勉強してます」「CakePHP勉強してます」
全面同意なわけです。
Railsチュートリアルも、読んで理解できるというレベルには達するけど、アプリケーションにした場合に!どうしたら!いいの!!って心の底では思ってた。うん、sinatraだね。
基本処理
今回勉強のため書いたコードは以下です。
require 'sinatra' require 'sinatra/reloader' # リクエスト前の処理 before do # 共通の変数を使用することができる # before/afterは before '/admin/*' do のようにリクエストを指定することも可能 @author = "hogehoge" end # リクエスト後の処理 after do # 例としてリクエスト後に正常完了したログメッセージを吐き出すようにした logger.info "page displayed successfully" end # ヘルパーによる共通関数の定義 helpers do def strong(s) "<strong>#{s}</strong>" end end get '/' do # helperで定義したstrongメソッドを使用した例 "hello world " + strong("admin") end get '/hello/:name' do "hello #{params[:name]}" end get '/hello/:id/:name?' do |n,i| # 2値をブロックで与えることができる # ?を付けることでパラメータをオプションにすることができる "hello #{n} #{i}" end get '/from/*/to/*' do |f, t| # シンボルではなくワイルドカードでもパラメータを渡せる "from #{f} to #{t}" end get %r{/users/([0-9]*)} do |i| # 正規表現でも記述することができる "user id = #{i}" end get '/erb' do # ERBの使用例 # ERBファイルのインデックスを読み込ませる erb :index end get '/:name' do |n| # パラメータをインスタンス変数で渡せる。テンプレート側で使用可能 @name = n # パラメータでなくとも変数は格納可能 @hoge = "hoge" erb :index end