自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。

April 05, 2005 [長年日記]

[Ruby] Using Gettext To Translate Your Rails Application

via 樂水開発日記。先日のこれが、Ruby on Railsの公式ドキュメントになってしまったらしい。これはまずいなー。といっても今さらRoRのMLに参加して議論を戦わせる時間も気合いもないしなぁ。どうしたものか。


April 06, 2005 [長年日記]

[Ruby] RWiki-2.1.0pre1

RWikiでもRuby-GetText-Packageを採用していただいたとのことでソースをちょっと見させて頂いた。

Ruby/GetTextはGetText::TextDomainというクラスを使ってカタログデータを管理して外部インタフェイスとしてGetTextモジュールを定義しているんだけど、RWikiでは、そのTextDomainクラスを直接利用してGetTextモジュール自体は書き直しているという形のようだ。

でも、そっかぁ。オレ、この辺が直接アクセスされていることを想定していなかったんだよなぁ。

現在リリースしているRuby/GetTextでは、TextDomainクラスにもGetTextモジュールにも文字列取得用のメソッドと実装が混在してるんだけど、現在のCVS版ではこの辺を「moファイルに直接アクセスするコアなメソッド(gettext/ngettext)はTextDomainへ、moファイルに直接アクセスしない文字列取得メソッド(sgettext/N_)はGetTextモジュールで」定義するように整理(リファクタリング?)しようと思ってるんだよなぁ。ちょっとまずいかな。

本日のツッコミ(全3件) [ツッコミを入れる]

 [gettext周りは(も)須藤さんが書いてます。RWikiのポリシーとしてはライブラリの変更を追っかけていくと思うの..]

kou [もちろんです. :) がんがんやっちゃってください. RWikiはちゃんと追従しますよ. ;D # 仕事のコードじゃ..]

むとう [了解です。そう言っていただけると助かりマスです。]


April 13, 2005 [長年日記]

[Misc] ダメだ....

ダメなのはアプリベンダだけかと思っていたのだがそれを管理しているプロジェクトリーダも相当イケテナイことが判明(2年越しかよ...)。

たまたまあるプロジェクトの定例ミーティングに(初めて)顔を出したんだけど、課題表無し、スケジュール表なし。アジェンダみたいな1枚紙にその週の作業をちょこっと書いて終わり、その場で議事録にメモってるから大丈夫って言う割には前回議事録も無い状態ってな状況に呆然としてしまった。これじゃぁ、課題が漏れまくり・忘れ去られまくりだと思うんだけど、それはないと胸を張ってるリーダ....。

こんな状況では、曲がりなりにもモノが完成しているってのがある意味すごい、って思えるくらいだよ...。


April 16, 2005 [長年日記]

[Misc] SF.jp

ふと気づいたんだけど、Ruby-GNOME2 Project Websiteのレスポンスが向上してる気がする。

最近、Hikiのinfo.dbが壊れるという問題に悩まされていたんだけどそれもここ数日発生していない。ということはひょっとしてサーバがリプレイスされたのかな!? だとしたらラッキー!


April 17, 2005 [長年日記]

[Ruby-GNOME2] GNOME Art 0.1 and GNOME Splash Screen Manager 0.1

via 安部さんとこ。GNOMEのアイコンとか背景とかをダウンロードしてプレビューしてインストールできるツール...で良いのかな。

ちょっと触ってみたんだけど、それなりにストレス無く使えるみたい。


April 25, 2005 [長年日記]

[Ruby] そのClassやらModuleやらmethodがどのファイルで定義されてるのか知りたい

Rubyでは、複数のファイルに渡って、1つのクラスやモジュールにメソッドや定数を追加できる。これはとても便利なんだけど、実際にそのメソッドが定義されているのはどのファイルだろう?と探すと結構大変だったりする。

そんなわけで、次のようなものを考えてみた。

alias :_require :require
 
$libnames = []
 
def require(lib)
  $libname = lib
  $libnames.push $libname
  _require lib
  $libname = $libnames.pop
end
 
def singleton_method_added(n)
  p [$libname, name, n.to_s]
end
def Object.method_added(n)
  p [$libname, name, n.to_s]
end
 
require ARGV[0]

例えば、これをtest.rbと保存して、$ ruby test.rb cgi とすれば、そのライブラリ名(cgi)、クラス名(CGI)、メソッド名(env_table等)が分かる。あとは、出力する部分を配列or ハッシュに保存してデータベースとすればよい。

....と思ってたんだけど、これで全部かなー。あ、load, autoload, evalとかも考えないとかぁ。gtk2でやってみると無名クラスっぽいところがダメだな...。うーむ、いろいろ問題ありっぽいなー。良いアイデアだと思ったんだけどなぁ。残念。


April 26, 2005 [長年日記]

[Ruby] Ruby-GNOME2のWebサイトがよくこける

なんらかのタイミングでinfo.dbが壊れる模様。

しょうがないので、counter.rbと同様に、1日1回7日分のバックアップをとるのと、10分ごとにファイルをチェックして壊れていたら前日分に戻す、というスクリプトを仕込んだ。前者はおいとくとして、後者はこんな感じ。

#バックアップはinfo.db.old.0 〜 info.db.old.6

require 'tmarshal'
require 'ftools'
 
HIKI_DATA_DIR = "/path/to/hikidata"
 
begin
  TMarshal.load(File.open("#{HIKI_DATA_DIR}/info.db", "r").readlines.join)
rescue SyntaxError
  back = (Dir.glob("#{HIKI_DATA_DIR}/info.db.old.?").sort{|a,b|
          File.mtime(a) <=> File.mtime(b)}.reverse)[0]
  File.cp(back, "#{HIKI_DATA_DIR}/info.db")
end

ファイルはロックしなくてもいいやー的な仕様。まぁ、どうせ壊れてたわけだし良いでしょ(無責任(^^;))。


April 30, 2005 [長年日記]

[Ruby] exec() on Win32

One Click Installerの最新版でWEBrickのCGIHandlerがうまく動かない。

#WEBrickをWindowsから使う、ってそもそも初めてだから何が正しいのかよくわからないんだけど(^^;)。

webrick/httpservlet/cgi_runner.rbのexec()がダメみたいなんだよなぁ。

exec()自体をテストしてもやっぱりうまく動かないや。

test.rb
---------
p "test"
---------
 
test2.rb
---------
exec 'test.rb'
---------
C:\temp> test2.rb 
C:/temp/test2.rb:1:in `exec': Exec format error - test.rb

拡張子.rbはruby.exeに関連づけられてるんだけど、execだとダメってことなのかな。ちなみに以下のようにすれば動くみたい。

test2.rb
---------
exec 'ruby test.rb'
---------
C:\temp> test2.rb 
"test"

1行目に#!c:\ruby\bin\ruby.exeとかつけてもダメだ。

実際は、拡張子.cgiをrubyに関連づけて動かそうと思ってたんだけど、どうもその前段階の問題のような....。関連づけだとダメなのかな。 まぁ、いずれにせよ、今日はここまで。疲れたからもう寝よ。

本日のツッコミ(全4件) [ツッコミを入れる]

Before...

むとう [HTTPサーバということはこの場合はWEBrick(で簡易httpサーバを作っています)になるわけですが、その行き着..]

IKeJI [亀レスすみません。検索してきました。 同じ問題にぶちあたりました。 とりあえず、cgi_runner.rbの最後の..]

むとう ["start" ってのがあるんですね。 お恥ずかしながら知りませんでした。]