plenvを使ってプロジェクト用のPerlをビルドする方法とそのスクリプト
ローカル開発の環境ではあんまcarton使う必要ないなーとか思っていて実際僕は使っていないんですが、みんなまじめにCarton入れて、いちいち% carton exec
とか打ったりとか独自エイリアス作ったりしてて大変そうだなーとか思っていたので以下の様なスクリプトを書いた。
プロジェクトリポジトリの直下なりに置いておいて叩いてもらうと、プロジェクト用のPerlがインストールされる。適当に-j 4
してるけど結構早くて手元の環境だと10分位でビルドできた。
以下の2点がミソ。
plenv
の--as
オプションを使いプロジェクト固有の名前でPerlをビルドする.perl-version
ファイルをプロジェクトディレクトリに配置して上の名前を指定する
これで、プロジェクトディレクトリに入れば自動的にプロジェクト用のPerlを見てくれるようになります。.perl-version
はリポジトリにコミットしないほうが良いのでignoreしておく。
あとは、% carton install
とかしないでも、% cpanm --quiet --with-develop --notest --installdeps .
とかやってそのPerlのsite_perlにガンガンCPANモジュールをinstallしていくことができる。
これで
- ちょっとした作業をPerlでやるときに、このモジュール、グローバルの方のPerlに入ってなかったわー
- carton execとか打つのタルいわー
みたいなところから解消される。多少はローカル開発環境用のPerlが汚れてしまう的な問題は出てきてしまうと思うけど、その辺はCIサーバーに任せればいいのかなーと思う。
% cpanm --quiet --with-develop --notest --installdeps .
とかはシェル履歴とかからたどってもいいけど、Daikufileにtaskとして登録してる。Daikuの話はまた次回。