sinatra extension ためしてみた
sinatra + sqlite + sequel + bootstrapの組み合わせで簡易ブログ書いてみたけどページネーションがうまくいかない・・・
extension書いたらと思いまずは公式ページのコードを写経して動かしてみた
Sinatra: Writing Extensions
require "sinatra" module Sinatra module SessionAuth module Helpers def authorized? session[:authorized] end def authorize! redirect '/login' unless authorized? end def logout! session[:authorized] = false end end def self.registered(app) app.helpers SessionAuth::Helpers app.set :username, 'frank' app.set :password, 'changeme' app.get '/login' do "<form method='POST' action='/login'>" + "<input type='text' name='user'>" + "<input type='text' name='pass'>" + "<button type='submit'>Submit</button>" + "</form>" end app.post '/login' do if params[:user] == options.username && params[:pass] == options.password session[:authorized] = true redirect '/' else session[:authorized] = false redirect '/login' end end end end register SessionAuth end #set :password, 'hoboken' get '/public' do if authorized? "Hi. I know you." else "Hi. We haven't met. <a href='/login'>Login, please.</a>" end end get '/private' do authorize! 'Thanks for logging in.' end
いけたので
ページネーション sinatra extension書いてみる