Sinatraに関するちょっとしたメモ

  • Pocket
  • このエントリーをはてなブックマークに追加
  • 162 follow us in feedly

まえがき

最近Sinatraをよく使うのでちょっとした基本的なメモをまとめておく。

開発環境

  • Ruby 1.9.3
  • gem 1.8.23
  • Sinatra 1.2.6

ファイルを更新時にサーバーの再起動を不要にする

デフォルトのサーバーだとファイルに変更を加えた際にサーバーを再起動しないと変更が反映されないので、ちょっと不便。

Sinatra/reloaderを入れてあげれば再起動が不要になる。

必要なgem

こんかいはGemfileに書いてインストール

gem "sinatra-contrib"

> bundle install

Sinatraのファイルに下記を追加

require "sinatra/reloader"

これでOK

前処理・後処理

リクエストを受けた際の前処理・後処理を追加することができる、主に前処理でログイン状況のチェックだったりするのに使える。後処理には結果をログに書き込んだりして使いそう。

# 前処理
before do
  @title = "no title"
end

# 後処理
after do
  logger.info "success"
end

ヘルパー

ヘルパーを作成しておくことでビュー側でも関数を利用できる。helpers do 〜 end 内にヘルパーとして扱いたい関数をゴリゴリ書く

helpers do
  def strong(s)
    "<strong>#{s}</strong>"
  end
  def red(s)
    "<span style='color:red'>#{s}</span>"
  end
end

テンプレート

テンプレートは基本的に ”/views” フォルダ内に作成する。erb hamlなどを利用できる

# tamplate を使用
get '/erb' do
  erb :index
end

# hamlも使える
get '/haml' do
  haml :index
end

# テンプレートなし最後に評価した式を出力
get '/hello' do
  "hello world"
end

共通のテンプレート

共通化したいテンプレートに関しては、layout.erbとゆう名前でビューファイルを作ってあげれば自動的に読み込んでくれる

<!DOCTYPE HTML>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title><%= @title %></title>
</head>
<body>
  <p>template使ってるよ</p>
  <%= yield %>
</body>
</html>

パラメータを扱う

# パラメータを表示
get '/yourname/:name' do
  "hello #{params[:name]}"
end

# ↑と同じ結果
get '/yourname2/:name' do |n|
  "hello #{n}"
end

パラメータを複数扱う

複数の場合も基本的には代わりはなし,”*”を使うこともできる

# パラメータを複数表示
get '/yourname3/:firstname/:lastname' do
  "hello #{params[:firstname]} #{params[:lastname]}"
end

# ↑と同じ結果
get '/yourname4/:firstname/:lastname' do |f, l|
  "hello #{f} #{l}"
end

# ↑と同じ結果
get '/yourname5/*/*' do |f, l|
  "hello #{f} #{l}"
end

jsonを吐き出す

簡単にjsonを出力するようなのを作るにはこんな感じで

# jsonを吐き出す
get '/test.json' do
  content_type :json, :charset => 'utf-8'
  {:aaa => "AAA", :bbb => "BBB"}.to_json
end

おすすめ書籍

パーフェクトRuby (PERFECT SERIES 6)
Rubyサポーターズ すがわら まさのり 寺田 玄太郎 三村 益隆 近藤 宇智朗 橋立 友宏 関口 亮一
技術評論社
売り上げランキング: 9,964
プログラミング言語 Ruby
プログラミング言語 Ruby
posted with amazlet at 13.12.02
まつもと ゆきひろ David Flanagan
オライリージャパン
売り上げランキング: 114,558

関連記事

images-3

Mac rbenvでRuby2.1.0をインストールするの巻

まえがき そういえば今月にRuby2.1.0がリリースされたみたいだ...

記事を読む

YAMLをRuby,Python,PHPで使ってみた

まえがき 『YAML』Rubyなんかをやってるとよく見る拡張子・書き...

記事を読む

rails runnerでRailアプリのバッチスクリプトを作る。

まえがき Railsで開発している時にちょっとしたバッチスクリプトな...

記事を読む

TestProject_と_TestProject.xcodeproj_—_main.m.pngスクリーンショット_2013_08_17_15_12.png

MacRubyをインストールしてみた。インストールから初めてのRunまで

まえがき RubyMotionやりたいなーと思いながらも、決心がつか...

記事を読む

Screeny Shot 2013-07-01 2.45.52.png

ニコニコ動画マイリストrssをPHPとRubyで取得してみる

まえがき ニコニコ動画のマイリストをRSSで取得できるみたいなので試...

記事を読む

新着記事

no image

PHPでRubyのirbっぽいインタラクティブなスクリプトが実行できる「boris」

まえがき PHPでもRubyのirbみたいなことがしたくて探してみたと...

記事を読む

2015年の抱負と去年の振り返り〜よちよちWEB業界1年経験して〜

まえがき あけましておめでとうございます。今年もどうぞよろしくお願いし...

記事を読む

Java SE 7 Bronze試験(1Z0-802)を受けてきました

まえがき 以前から少し受けてみたかった試験『Java SE 7 Bro...

記事を読む

HubotでJenkinsのジョブを実行する

まえがき HubotをつかってJenkinsのジョブをじっこうしてみた...

記事を読む

no image

Hubotをforeverでデーモン化する

まえがき 今回はHubotをforeverを使ってデーモン化してみた時...

記事を読む

スポンサーリンク

  • Sorry. No data so far.

PAGE TOP ↑