qwikWeb は素晴らしい。エンドユーザーにもわかりやすくて良い。quickML部分の仕様は、実際の運用形態を考えたら、たいていの場合はこれで必要十分なんだよね。そして、qwikWebだ。wikiページとMLへのポストを一緒に扱えるのは良い。
で、ソフトウェア開発においては、tracでこういう機能を使えたらもっといいんじゃないかと思う。tracとメーリングリストの連携については MailArchiveプラグイン が秀逸だ。でも、これ自体にはメーリングリストの管理機能は無い。そこで、将来はquickML/qwikWebをtrac pluginにportすることを見据えつつ、まずはメーリングリスト機能にはquickMLを利用し、tracと連携させることにした。
まずはMailArchivePluginをインストール。mailarchive-admin.pyを/usr/local/binに配置した。 そして、
require 'tempfile' QuickML::Group.class_eval do def _submit_with_trac_posting(mail) _submit_without_trac_posting(mail) Tempfile.open('quickml-to-trac') { |f| now = Time.now.strftime('%a %b %d %H:%M:%S %Y') f.puts "From #{mail.mail_from} #{now}" mail.each_field do |name, value| f.puts "#{name}: #{value}" end f.puts f.puts mail.body f.flush command = [ "python", "/var/trac/projects/#{self.name}", " import", self.name, f.path ].join(' ') @logger.log command @logger.log `#{command}` } rescue => err @logger.log "error: #{err.message}" end alias_method :_submit_without_trac_posting, :_submit alias_method :_submit, :_submit_with_trac_posting end
これをqwik/group.rbにrequireさせればOK。 パスとかはハードコードしちゃってるけど。tracのenvironmentとメーリングリストが同名であると仮定。というか、その方が使いやすいと思うよ(Convension over Configuration!)
以上で、メーリングリストにポストすればそれがtracのほうでもMailArchivePluginを使って閲覧できるようになる。