概要
Sinatra の time_for
は Time オブジェクトを生成するためのヘルパーメソッドです
今回はどんな感じで使えるのか試してみました
環境
- macOS 10.15.7
- Ruby 2.7.1p83
- sinatra 2.0.7
とりあえず使ってみる
引数には Time オブジェクトを生成する文字列を指定することができます
Time.parse
で指定可能な形式ならなんでも OK です
vim app.rb
require 'sinatra/base'
class MyApp < Sinatra::Base
get '/' do
t = time_for('Oct, 15 2020')
# t = time_for('2020/10/15 10:09:55')
# puts t.class # -> Time
t.to_s
end
end
last_modified や expires ヘルパーメソッドに影響する
last_modified
と expires
はヘッダを自動的に付与するヘルパーメソッドです
これらのヘッダは基本的に時刻を返却するようになっています
Sinatra では last_modified
や expires
は内部的に time_for
を呼び出しているので time_for
をオーバライドすることでそれらを使いやすくすることができます
require 'sinatra/base'
class MyApp < Sinatra::Base
helpers do
def time_for(value)
case value
when :yesterday then Time.now - 24*60*60
else super
end
end
end
get '/' do
last_modified :yesterday
'ok'
end
end
デフォルトの time_for
に関してはこのあたりのソースを読むとわかりやすいと思います
最後に
Sinatra の time_for
ヘルパーメソッドを試してみました
他のヘルパーメソッドメソッドからも参照されているのでデフォルトの time_for をオーバライドすることでいろいろと使えそうなヘルパーメソッドにすることができそうです
0 件のコメント:
コメントを投稿