tDiary を gem でインストール可能にした
この連休中に tDiary をgemに対応させた。これで、tDiaryを1コマンド (gem install tdiary) でインストールできるようになった。
次のリリース(7月末の3.3.0リリース)で正式に対応予定で、それまではインタフェースも変えるかもしれないけど、できれば使ってもらってのフィードバックを希望。この日記も近いうちに gem 対応版で運用するつもり。
gem対応のメリット
- gitやzip解凍が不要で簡単にインストール可能になる
- ライブラリ (tDiary本体) と日記データを分離できる
- アップデート・バージョン管理が容易になる
使い方
gem install コマンドで tDiary をインストールする。
$ gem install tdiary --no-document
Successfully installed tdiary-3.2.2.20130507
Done installing documentation for tdiary (0 sec).
1 gem installed
$ rbenv rehash # rbenv環境のみ実施
インストールすると tdiary コマンドが使えるようになる。 new コマンドで日記フォルダを作成する。引数で指定したディレクトリ(以下の例ではdiary)に、必要なファイルがコピーされる。
$ tdiary new diary
create diary
create diary/public
create diary/misc/plugin
create diary/README.md
create diary/Gemfile
create diary/config.ru
create diary/tdiary.conf.beginner
create diary/tdiary.conf.sample
create diary/tdiary.conf.sample-en
create diary/tdiary.conf
create diary/doc
run bundle install --without test development from "./diary"
run bundle exec tdiary htpasswd from "./diary"
Input your username/password
Username: machu
New password:
Re-type new password:
install finished
run `tdiary server` in diary directory to start server
tdiary serverコマンドでサーバが起動する(内部でrackupコマンドを呼んでいる)。
$ cd diary
$ tdiary server
run bundle exec rackup from "."
>> Thin web server (v1.5.1 codename Straight Razor)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:9292, CTRL+C to stop
gem化のモチベーション
以前はtDiaryを動かす環境として、レンタルサーバや自宅サーバのCGI環境が定番だった。僕が一番最初に書いた日記も、XREAへのtDiary設置方法だったりする。今読み返すと、shebang行を変更したり .htaccess や .htpasswd を作ったりと、それなりに大変だったことがわかる。
それから10年弱が過ぎて、様々なRubyのアプリケーションも登場し、インタフェースもRackに統一され、もっと手軽にサーバを起動できる環境が整ってきた。そこで、もっと簡単に導入できるように、 tDiary を gem に対応させた。おおまかには、これら3点の作業となった。
- tdiary.gemspec ファイルを作る
- bin/tdiary コマンドを実装する
- ライブラリの設置ディレクトリと tDiary の実行ディレクトリが別でも動作可能にする
この程度の修正ですんだのは、tDiaryがRackに対応できていたことと、CGIの頃から設置のみで動く(DBセットアップが不要)ようにできていたこと、それから、テストケースが充実していたおかげだと思っている。
とはいえ、それなりに大きめの変更だったので、作業内容を pull request に逐次記録する 方式を採用してみた。 pull request にTODOのチェックリストを作っておけば、どこまで作業が進んでいるかの目安にもなった。
まとめ
- gem対応により、tDiaryを簡単に導入できるようになった
- まだmasterにマージしたばかりなので不安定かも(正式リリースは7月末)
- 興味のある方はぜひお試し&フィードバックください。