pvm の紹介とその背景について #play_ja
この記事は Play framework 2.x Java and 1.x Advent Calendar 2013 の 2 日目です。元々 12/3 の予定でしたが 12/2 が空いたままで存亡の危機だったので、一日スライドしました。
http://www.adventar.org/calendars/104
pvm とは
今回は pvm(Play Version Manager)について紹介したいと思います。
https://github.com/kaiinkinen/pvm
pvm は nvm の仕様を踏襲した、複数の Play Framework のバージョンを管理するためのツールです。bash で書かれたシンプルなスクリプトで pvm.sh を .bash_profile などで読みこんで使います。
README では $HOME/utils/pvm に git clone する例が紹介されていますが nvm 的にするなら $HOME/.pvm でもいいかもしれません。実際 $HOME/.pvm で運用しても特に支障はないのですが、単に作者の好みですかね。
git clone git://github.com/kaiinkinen/pvm.git .pvm
使い方は一目瞭然なので使い方の解説は省略します。
$ pvm Play Version Manager Usage: pvm help Show this message pvm install <version> Download and install a <version> pvm uninstall <version> Uninstall a version pvm use <version> Modify PATH to use <version> pvm run <version> [<args>] Run <version> with <args> as arguments pvm ls List installed versions pvm ls <version> List versions matching a given description pvm deactivate Undo effects of PVM on current shell pvm alias [<pattern>] Show all aliases beginning with <pattern> pvm alias <name> <version> Set an alias named <name> pointing to <version> pvm unalias <name> Deletes the alias named <name> pvm clean Removes non-installed versions from the cache pvm clear-cache Deletes all cached zip files Example: pvm install 1.2.4 Install a specific version number pvm use 1.2 Use the latest available 1.2.x release pvm alias default 1.2.4 Auto use the latest installed 1.2 version
bash スクリプトなので Windows では使うことが出来ません。Windows で Play を使っている方、ぜひ Windows 版をつくりましょう!
そもそも必要なの?
「Play って sbt ベースだから play の sbt プラグインのバージョンを各プロジェクトで管理するだけじゃん。こんなの必要なの?」と思われた方、Play 新参者なのがバレてますよ!!!
確かに Play2 にだけ関わっている方であれば不要です。しかし、Play には Plain Old Play Framework ともいうべき 1.2.x がまだ現存しており、かつ世界中でそれなりに稼働し続けているという現実を忘れてはなりません。
http://www.playframework.com/download
こちらは私の開発マシンにインストールされている Play のバージョンです。
$ pvm ls Available: 1.2.5 1.2.6 2.1.3 2.2.1 1.2.5.3 1.2.7 2.1.4 Aliases: default -> 1.2.7 Current version: current -> 1.2.7
特に 1.2.5 と 1.2.6 以降は cookie session の互換性がなかったりと断絶があるので 1.2.5 と最新を両方運用しているというケースはまだまだありそうです。Play1 のリリース管理においても 1.2.5 だけは特別扱いしていて 1.2.5.3 というバージョンが出ていたりします。
また 1.3 に向けた開発も続いています。
http://play.lighthouseapp.com/projects/57987/milestones/106971-13
http://play.lighthouseapp.com/projects/57987-play-framework/tickets
Play1 の運用に関わるならば、これからも pvm を利用することはありそうです。
全国の Play ユーザの皆さんへ
Advent Calendar がちょっと寂しい状況になっていますね。ちょっとしたネタでもよいと思うのでぜひお気軽にご参加ください。
Play framework 2.x Java and 1.x Advent Calendar 2013
http://www.adventar.org/calendars/104
Play framework 2.x Scala Advent Calendar 2013
http://www.adventar.org/calendars/114
FYI:
どうしても困ったら Skinny Framework の宣伝を書きにいきますので、お気軽にご依頼ください(ぇ
— Kazuhiro Sera (@seratch) December 1, 2013