目的
このページの目的は、Sinatra が提供する機能のコンパクトリファレンスを提供することです。
必要時に調べたことをまとめていくので、使っていない機能に関しての記載がない点はご了承ください。
本リファレンスを理解するために重要となるスコープという概念を理解していない人は、以下のページを事前に参照すると良いでしょう。
また、詳細は以下のサイトを参照すると良いでしょう。
- 参考
- メインサイト - Sinatra
- Sinatra: README(Japanese)
- Sinatra Book(英語)
ハンドラ群
- 全てのハンドラはアプリケーション/クラススコープで定義します。
- 下の表の並びは、実行されるハンドラの種類の順番を表しています。例えば 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_found | Sinatra::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 で行う。無効時もダミーオブジェクトが返ってくるため特別な判断は不要。 |
アプリケーション/クラスのスコープで利用可能な機能
キーワード | 概要 |
use | Rack Middleware を組み込む。 |
set | アプリケーション/クラスのスコープの変数を定義する。組み込みの変数を設定することで基本動作を変更できる他、独自の変数の定義もできる。 設定した値はアプリケーション/クラススコープであればその名称で直接参照でき、リクエスト/インスタンスでは settings を使用し参照できる。 |
enable | set の別名。「set 変数名, true」と同義。 |
disable | set の別名。「set 変数名, false」と同義。 |
template | ... |
mime_type | ... |
content_type | ... |
set, enable, disable による組み込み変数
- 取り得る値は代表事例です。Proc を利用し、動的な状況判断などにより値を返すこともできます。
変数名 | 概要 | 取り得る値 | 標準値 |
:environment | 環境の状態を表す。一般的には :development(開発中)/:test(テスト中)/:production(製品版)を使用する。 | :development, :test, :production | ENV['RACK_ENV'] || :development |
:sessions | セッション機能の有効/無効を表す。セッション機能の実体は Rack::Session::Cookie ミドルウェア。 | true, false | false |
: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_handler | Proc.new { development? } |
:lock | Mutex によるロックでシングルスレッドで動作させる機能の有効/無効を表す。 | true, false | false |
... | ... | ... | ... |
テンプレートによる文字列生成
- 好みに応じて各種テンプレートを利用できます。テンプレートの種類に応じたメソッドを使います。
コメント
本ページの内容に関して何かコメントがある方は、以下に記入してください。
最新の10件を表示しています。 コメントページを参照