おまぬけ活動日誌

最近のツッコまれどころ

この日誌から Google してもらう


2009年08月17日(Mon) ぼろい方の自転車で通勤 [同日]

[memo] 日誌の整備中に503になってもらう

金曜日にやりかけた作業を続けて、 今度こそ日誌をtrunkのものにしてみる。

まずデータのコピー。その間は日誌を閲覧できないようにしておく。 本当は.htaccessで503を返したいのだけれど、 このサーバのApache/1.3.41ではmod_rewriteが許してくれなかった。 今回は、プロセス数で閲覧制限をかけるライブラリをちょっと変更して対応した。

次に、これまで使っていたdata_dirを、これから使うdata_dirにコピーした。

そして、新しい日誌として準備してきたディレクトリを 今までの日誌のディレクトリの代わりに配置した。 閲覧制限をかけていない更新用のURLにアクセスしたところ、 サーバで長いことrubyが走った。 プラグインの選択で自家製のもののうち、trunkで動かないと確認したもの(random-date.rb)や古くて不要のものの選択をはずした。

最後に閲覧制限のライブラリを元に戻して最新の日誌を閲覧して確認した。

[tDiary] makerssと不仲になってしまった

上記の続き。それで日誌を更新して終了…と思ったら、

500 Internal Server Error

undefined method `split_unless_plugin' for #<Enumerable::Enumerator:0x121807a88>

./misc/lib/compatible.rb:57:in `__send__'
./misc/lib/compatible.rb:57:in `method_missing'
./tdiary/emptdiary_style.rb:117:in `body_to_html'
(plugin/makerss.rb):340:in `makerss_body'
(plugin/makerss.rb):240:in `makerss_update'
(plugin/makerss.rb):239:in `each'
(plugin/makerss.rb):239:in `makerss_update'
./tdiary.rb:556:in `each_with_index'
(plugin/makerss.rb):237:in `each'
(plugin/makerss.rb):237:in `each_with_index'
(plugin/makerss.rb):237:in `makerss_update'
/usr/pkg/lib/ruby/1.8/pstore.rb:322:in `transaction'
/usr/pkg/lib/ruby/1.8/pstore.rb:321:in `catch'
/usr/pkg/lib/ruby/1.8/pstore.rb:321:in `transaction'
(plugin/makerss.rb):189:in `makerss_update'
(plugin/makerss.rb):402:in `load_plugin'
./tdiary.rb:844:in `call'
./tdiary.rb:844:in `update_proc'
./tdiary.rb:843:in `each'
./tdiary.rb:843:in `update_proc'
./tdiary.rb:1520:in `do_eval_rhtml'
./tdiary.rb:1520:in `instance_eval'
./tdiary.rb:1520:in `do_eval_rhtml'
./tdiary.rb:1096:in `eval_rhtml'
update.rb:67

なんぞ。

makerss.cacheを消してもう一度更新してみよう。どうじゃ?

今度はエラーをもらわなかった。うーん…気持ち悪いけどお腹が空いたのでここまで。

[tDiary] スタイルのインストールし忘れをちゃんと検出させる

先週からの続き。

スタイルが無い場合にraiseされるエラーが代わったので、 日誌を読み込めないままコードが実行されて、 日誌にコメントを読み込もうとするところで止まる、という問題に、 変化した先のエラー(NoMethodError)を捕捉することで対応しようとしたのですが、 ところがどっこい、 最新の日誌を表示する時に現在の月の日誌が無い場合に上がるエラー (defaultio.rbの228行目付近のfh.getsがnilになった時)がおなじだったのでした。 最新の日誌を表示しようとするとスタイルが無いとおこられる。 だめじゃん。

というわけで、これはリファクタリングの範疇だろうなあ、と思ってた、下記のような変更をcommit(r3519)しました。

Index: tdiary.rb
===================================================================
--- tdiary.rb	(revision 3518)
+++ tdiary.rb	(working copy)
@@ -425,11 +425,7 @@
 		end
 
 		def styled_diary_factory( date, title, body, style_name = 'tDiary' )
-			if style_class = style( style_name.downcase )
-				return style_class::new( date, title, body )
-			else
-				raise BadStyleError, "bad style: #{style_name}"
-			end
+			return style( style_name.downcase )::new( date, title, body )
 		end
 
 		def load_styles
@@ -442,7 +438,14 @@
 		end
 
 		def style( s )
-			@styles ? @styles[s.downcase] : nil
+			unless @styles
+				raise BadStyleError, "styles are not loaded"
+			end
+			r = @styles[s.downcase]
+			unless r
+				raise BadStyleError, "bad style: #{s}"
+			end
+			return r
 		end
 	end
 
Index: tdiary/defaultio.rb
===================================================================
--- tdiary/defaultio.rb	(revision 3518)
+++ tdiary/defaultio.rb	(working copy)
@@ -242,8 +242,6 @@
 						diaries[headers['Date']] = diary
 					end
 
-				rescue SyntaxError
-					raise "#{style_name} style not found."
 				rescue NameError
 					# no magic number when it is new file.
 				end

stlyeメソッドを読んでるのは上記のstyled_diary_factoryと、 defaultio.rbの中だけのようなので、これで振舞は変化しないはず。はず。

ポケットに自由を

Free Software Foundationから郵便が届いていた。 先日メンバーになって、ブートできる会員証をお願いしていたものが届いたのでした。 本当なら払ったお金をぜんぶソフトウェアの自由のために使ってもらいたいところだけど、こういうグッズに興味もあるので。

gNewSense

クレジットカードより小さい、ちょっと分厚いカードの端に端子がついていて外形寸法はクレジットカードの大きさになっている。これを挿して起動すると、ちょっと時間はかかるけれど、gNewSenseが起動してくれた。良いね。アクセスランプも光るよ!残念ながらDocoMomoよりだいぶ遅いけど財布に入れておくのには便利♪

郵便にはいくつかステッカーも入っていたので、早速N810に貼ってみました。

GNU/Linux inside!

Defective by DesignのステッカーはMacBookに貼っておきたいところだけど自重しておく。


作り手とその取り巻きだけが楽しんでる間は本物じゃない。その中身が理解できない人々の生活を変えてこそ本物だ


zunda <zunda at freeshell.org>