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

  • 0
    いいね
  • 0
    コメント

    備忘録

    検証環境

    $ 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