at posts/single.html

tDiary を gem でインストール可能にした

この連休中に tDiary をgemに対応させた。これで、tDiaryを1コマンド (gem install tdiary) でインストールできるようになった。

tDiary gem

次のリリース(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月末)
  • 興味のある方はぜひお試し&フィードバックください。

関連する日記