«前の日記(2007-04-05(Thu)) 最新 次の日記(2007-04-07(Sat))» 編集

[email protected]



2007-04-06(Fri) [長年日記]

_ Ruby-1.8.6で、自己流「date.strftimeで曜日に日本語を出す方法」

Rails-1.2.3に上げたついでに、Rubyも1.8.6に上げたところ、masuiさんがdate.strftimeで曜日に日本語を出す方法で紹介されている方法が使えなくなった。

1.8.6でlib/ruby/1.8/date.rbが更新されて

[MONTHNAMES, DAYNAMES, ABBR_MONTHNAMES, ABBR_DAYNAMES].each do |xs|
  xs.each{|x| x.freeze}.freeze
end

こんな感じになったのが原因。

そんな訳で、とりあえず、自分でもできる範囲で対処してみた。

まず、${RAILS_ROOT}/lib/に下記のファイルを準備する。

lib/overrides.rb:

Date::ABBR_DAYNAMES = %w(日 月 火 水 木 金 土)
Date::DAYNAMES = %w(日曜日 月曜日 火曜日 水曜日 木曜日 金曜日 土曜日)

class Time
  alias :strftime_nolocale :strftime

  def strftime(format)
    format = format.dup
    format.gsub!(/%a/, Date::ABBR_DAYNAMES[self.wday])
    format.gsub!(/%A/, Date::DAYNAMES[self.wday])
    self.strftime_nolocale(format)
  end
end

それからconfig/enviroment.rbの最後に

require 'overrides'

を書いておく。

serverを動かすと、

./script/../config/../lib/overrides.rb:1: warning: already initialized constant ABBR_DAYNAMES
./script/../config/../lib/overrides.rb:2: warning: already initialized constant DAYNAMES

ってなエラーが出るけれど、とりあえず、動いてはいるみたい。

もっと良い方法があったら教えてください。m(_)m

元ネタ:Initiation Rails - Club d'entraide des dveloppeurs francophones(何が書いてあるかは読めないので分からんけど、コード部分だけ)

Tags: Rails Ruby

_ 配達あかずきん (ミステリ・フロンティア)(大崎 梢)

本屋の謎は本屋が解かなきゃ(p.238)

駅ビルにある本屋、成風堂で起こる、ちょっとした事件を杏子と多絵の二人の店員が解決するという連作短篇集。

作者が新人なためか、少しぎこちなさが見られるものの、実在する本*1が絡むストーリーは本好きのツボを突いてきているし、一般人があまり知ることはない、書店店員の日常もばっちり描写されており、「一粒で二度おいしい」(p.226)なものになっている。

本書に収録されている作品は

  • 「パンダは囁く」
  • 「標野にて 君が袖振る」
  • 「配達あかずきん」
  • 「六冊目のメッセージ」
  • 「ディスプレイ・リプレイ」

の五篇。

美容室に配達した雑誌に挟まっていた盗撮写真の謎を解くという、なかなか本格ミステリーしている表題作も良いが、個人的には「六冊目のメッセージ」が一押し。本好きにとって、友人や知人、家族に薦めた本に「面白かった!」と言われることに優る喜びはないんじゃなかろうか。

本に囲まれた空間に行くとわくわくしてしまう、そんな活字中毒の人に強力にプッシュしたい一冊だ。

*1 「ディスプレイ・リプレイ」に登場するコミックは例外だと思うが。