君の瞳はまるでルビー - Ruby 関連まとめサイト

Sinatra コンパクトリファレンス

最終更新: 2015-03-31 (火) 21:53:21 (1688d)

目的

このページの目的は、Sinatra が提供する機能のコンパクトリファレンスを提供することです。

必要時に調べたことをまとめていくので、使っていない機能に関しての記載がない点はご了承ください。

本リファレンスを理解するために重要となるスコープという概念を理解していない人は、以下のページを事前に参照すると良いでしょう。

また、詳細は以下のサイトを参照すると良いでしょう。

ハンドラ群

  • 全てのハンドラはアプリケーション/クラススコープで定義します。
  • 下の表の並びは、実行されるハンドラの種類の順番を表しています。例えば before より先に get を定義したとしても、before は get よりも必ず先に実行されます。
  • 各スコープが持つ内容(変数やメソッドなど)は、先に起動したハンドラによって決まります。
  • 同じ種類のハンドラを何度でも定義できます。例えば helpers を複数回に分けて定義しても大丈夫です。
  • 同種のハンドラの実行順序は定義順です。実行して確認したところ、after の実行順序も定義順です*1
キーワード名概要ハンドラブロック内部のスコープ
configure環境の初期動作を定義する。起動時に1回だけ実行される。アプリケーション/クラス
helpersリクエスト/インスタンスのスコープで利用可能なヘルパーメソッドを定義する。アプリケーション/クラス
beforeルートハンドラ実行前に行う処理を定義する。リクエストを変更できる。リクエスト/インスタンス
getルートハンドラの1つ。HTTP の get メソッドに対するハンドラを定義する。戻り値の定義はこちらを参照のこと。リクエスト/インスタンス
putルートハンドラの1つ。HTTP の put メソッドに対するハンドラを定義する。戻り値の定義はこちらを参照のこと。リクエスト/インスタンス
postルートハンドラの1つ。HTTP の post メソッドに対するハンドラを定義する。戻り値の定義はこちらを参照のこと。リクエスト/インスタンス
deleteルートハンドラの1つ。HTTP の delete メソッドに対するハンドラを定義する。戻り値の定義はこちらを参照のこと。リクエスト/インスタンス
error例外発生時の処理を定義する。発生した例外は env['sinatra.error'] で参照する。開発中は機能しない。また、set :show_exceptions, :after_handler の設定も必要。リクエスト/インスタンス
not_foundSinatra::NotFound が起きた時かレスポンスのステータスコードが 404 のときの処理を定義する。リクエスト/インスタンス
afterルートハンドラ実行後に行う処理を定義する。レスポンスを変更できる。リクエスト/インスタンス

リクエスト/インスタンスのスコープで利用可能な機能

  • インスタンス変数(先頭に @ が付く変数のこと)を自由に定義し、参照できます。
  • helpers で定義した機能を利用できます。
キーワード名概要
requestブラウザからのリクエストの情報を参照できる。
responseレスポンスを取得できる。戻り値の定義は Rack::Response もしくは Sinatra::Response を参照のこと。
sessionユーザ毎のセッション情報を参照できる。標準は無効。有効にするには enable :sessions で基本動作を設定する。
paramsフォームで送信された情報はもちろん、ハンドラで定義したパターンにマッチングした情報の参照にも利用する。
settingsアプリケーション/クラススコープの情報を参照できる。
pass現在のハンドラの処理を中断し、次のハンドラに処理を渡す。
halt処理を強制終了し、直ちにレスポンスを返す。レスポンスの内容を指定する方法が各種用意されている。
uri(もしくは url, to*2アプリケーション内 URL から絶対パス URL を生成する。
redirect指定した URL にリダイレクトする。アプリケーション内でリダイレクトする際は to を組み合わせて利用し、redirect to でリダイレクトする。
テンプレート呼び出し各種テンプレートを使って文字列を生成する。
logger専用の Logger を参照できる。実体は env['rack.logger'] であり、アプリケーションサーバで設定する or ミドルウェアで設定する or before で設定する等対応が必要である。
ログ出力の有効・無効は enable/disable :logging で行う。無効時もダミーオブジェクトが返ってくるため特別な判断は不要。

アプリケーション/クラスのスコープで利用可能な機能

キーワード概要
useRack Middleware を組み込む。
setアプリケーション/クラスのスコープの変数を定義する。組み込みの変数を設定することで基本動作を変更できる他、独自の変数の定義もできる。
設定した値はアプリケーション/クラススコープであればその名称で直接参照でき、リクエスト/インスタンスでは settings を使用し参照できる。
enableset の別名。「set 変数名, true」と同義。
disableset の別名。「set 変数名, false」と同義。
template...
mime_type...
content_type...

set, enable, disable による組み込み変数

  • 取り得る値は代表事例です。Proc を利用し、動的な状況判断などにより値を返すこともできます。
変数名概要取り得る値標準値
:environment環境の状態を表す。一般的には :development(開発中)/:test(テスト中)/:production(製品版)を使用する。:development, :test, :productionENV['RACK_ENV'] || :development
:sessionsセッション機能の有効/無効を表す。セッション機能の実体は Rack::Session::Cookie ミドルウェア。true, falsefalse
:loggingロギング機能の有効/無効を表す。true, false状況により変わる。
:method_override.........
:root.........
:public_folder.........
:views.........
:run.........
:server.........
:bind.........
:port.........
:dump_errors.........
:raise_errors.........
:show_exceptions例外表示機能の有効/無効を表す。
true だと error ハンドラ前に例外表示機能が有効になる。
error ハンドラを利用する場合 :after_handler を設定することで error ハンドラ後に例外表示のレスポンスを生成するようになる。
true, false, :after_handlerProc.new { development? }
:lockMutex によるロックでシングルスレッドで動作させる機能の有効/無効を表す。true, falsefalse
............

テンプレートによる文字列生成

コメント

本ページの内容に関して何かコメントがある方は、以下に記入してください。

最新の10件を表示しています。 コメントページを参照

  • iPhone で閲覧すると、:environment の概要などに用いられている :production の :p が顔文字に変わってしまいます。PC/Macからだと問題ありません。 -- riocampos 2015-02-02 (月) 15:32:11
  • 追記です。やはり↑のコメントの :p も iPhone だと顔文字になります^^; -- riocampos 2015-02-02 (月) 15:33:28
  • 報告有り難うございます!フェイスマークの自動変換を無効にしたのでちゃんと表示されるようになったと思います。 -- トゥイー 2015-02-05 (木) 20:51:05
お名前: