SinatraでFlash(1回きりのセッションデータ)を用いる

備忘録

前提

以下の環境で動作確認済み

$ ruby -v
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]
$ gem -v
2.4.5
$ bundle -v
Bundler version 1.13.4

FLASHとは

直後のHTTPリクエストのみで使用するセッションデータ。
POSTでデータを登録した後にGETにリダイレクトし、登録の結果メッセージを表示するのに使ったりする

rack-flash3をインストール

gem install rack-flash3

bundlerを使う場合
Gemfileに以下を追加し、bundle install

 gem "rack-flash3"

プログラム例

‘/’ 経由で’/hoge’にアクセスした場合に、’flash data’を出力。
直接’/hoge’にアクセスしたり、リダイレクト後に再読込した場合に’no data’を出力。

require 'sinatra/base'
require 'rack/flash'

class App < Sinatra::Base

  configure do
    use Rack::Flash
  end

  get '/' do
    flash[:hoge] = 'flash data'
    redirect '/hoge'
  end

  get '/hoge' do
    if flash[:hoge]
      flash[:hoge]
    else
      'no data'
    end
  end

end

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です