るびべん です: えっと、大雑把にいうと、「他人のスクリプト(1248行)を利用して改造したい のですが、どういう方針がいいでしょう」というご相談です。 1.やりたいこと 高林さんの作っている「quickmlサーバ」 (http://quickml.com/quickml/)と いう素晴らしいスクリプトがあるのですが、残念ながらroot権限が必要です(だ いたいrootさんならMLくらい自分でドンドン立てるワイ、との陰の声(笑))。 ということで、.qmail(もしくは、.forward)から呼び出す方式(fmlちっくに) に上記のスクリプトに上記を書き換えようという作戦。 2.スクリプト自体http://quickml.com/quickml/quickml-0.3.tar.gz は、えい やっと読めば、キモはわかります。 ただ、オリジナルは末尾が: server = QuickMLServer.new(config) sweeper = QuickMLSweeper.new(config) trap(:TERM) { server.shutdown; sweeper.shutdown } trap(:INT) { server.shutdown; sweeper.shutdown } trap(:HUP) { config.logger.reopen } t = Thread.new { sweeper.start } t.abort_on_exception = true server.start end てな形式の「コテコテ」のデーモン君ですので、STDIN→入力→各種処理(ここ でコードの再利用すべきや?)→出力→sendmail -t 方式に大改造・・・・ 3.上記行数のとおり、さほど長いもんじゃないんですが、クラス継承、モジュー ルのinclude があって、スパゲッティをほどくのがめんどくさそう(泣)。 正直なところ、クラスを使う部分は本質的ではない。 4.作者である 高林さとる さんにもquickml-server-MLで相談したりしてるん ですが、スキーに行ったきり帰ってきません(笑)。##おーーーい、骨折とか してないかぁ〜(^^ /~ #ruby-list のほうがおせっかいな方が多そうだし・・・ ===でもって考えられる案。 (案の1)ちょこまかと、mail処理部分を呼ぶところだけいじくって、できるだ けオリジナルはいじらない(「running code は触るな」の原則)。 ##だけど、そもそもオリジナルは、SMTP処理まで入ってるスクリプトであっ て、これじゃあまりに無駄な部分が多いような。 (案の2)まず、クラスの依存関係をきっちり整理してよけいな依存関係を削除 し、クラスらいぶらりを呼び出すメインルーチンだけを書く。 ##まぁ、「教科書」にはこう書いてありますけど、世の中これで済めば・・・ (案の3)オリジナルスクリプトから「アイディア」だけを拝借して、1から書 き直す。そもそも、STDIN を TEXT処理して、sendmail -tなんていうのは、「上 から下に抜ける」スクリプトであって、かぷせる化なんか不要なはず。スクラッ チから書け! === プロ的には、やっぱ(案の3)なんでしょっかねぇ(悩)。 るびべん@あまグラマー。