26
Hokkaido.pm #6 @aloelight Carton使ってみた

Use Carton

Embed Size (px)

Citation preview

Page 1: Use Carton

Hokkaido.pm #6@aloelight

Carton使ってみた

Page 2: Use Carton

自己紹介•佐々木 義広• Twitter: @aloelight• CPAN: YSASAKI•Webアプリ作成とサーバの管理

Page 3: Use Carton

Carton• Bundler for Perl• CPAN Moduleの依存関係を解決• Authorがmiyagawaさん

Page 4: Use Carton

使い方

Page 5: Use Carton

carton install 1/3•引数無しだとBuild.PLかMakefile.PLから依存モジュールをインストール

•引数にモジュール名を指定して、個別にインストール可能

• local/にlocal::lib形式でインストール•依存情報はcarton.lockに書き込まれる

Page 6: Use Carton

carton install 2/3•個別インストールでバージョン指定が可能

• carton install URI~1.51•インストール済みモジュールの更新の場合はバージョン指定が必要

Page 7: Use Carton

carton install 3/3• carton install --deployment• deploy用• carton.lockから依存情報を取り出して、インストールしてくれる

Page 8: Use Carton

carton uninstall•必要なくなったモジュールをアンインストールできる

• cartonでモジュールを管理している場合はpmuninstallは必要なさそう

Page 9: Use Carton

carton exec• PATHと@INCを適切に設定して、引数のコマンドを実行してくれる

• carton install Plack && carton exec -- plackup

• PATHにlocal/binを追加• PERL5OPTで@INCをよろしく整理

Page 10: Use Carton

シンプル!これなら私でも使える

Page 11: Use Carton

早速使ってみた(※PODにALPHAって文字がみえるけどね!)

Page 12: Use Carton

使用事例• Tweet::ToDelicious•某サービスのJSON RPC Server

Page 13: Use Carton

Tweet::ToDeliciousの場合

Page 14: Use Carton

Tweet::ToDelicious•開発環境 Mac OSX Lion•本番環境 FreeBSD 8.1•依存モジュール• 12 dists in Makefile.PL• 53 dists in carton.lock• CPAN形式のディレクトリ構成•個人プロジェクト

Page 15: Use Carton

移行作業• git clone $URL $PROJECT_DIR• cd $PROJECT_DIR• carton install --deployment• carton exec -Ilib ./bin/t2delicious.pl

Page 16: Use Carton

簡単でした

Page 17: Use Carton

JSON RPC Serverの場合

Page 18: Use Carton

JSON RPC Server•開発環境 Ubuntu on VMware•本番環境 CentOS•依存モジュール• 39 dists in Makefile.PL• 131 dists in carton.lock• CPAN形式のディレクトリ構成•業務の新規プロジェクト

Page 19: Use Carton

Tweet::ToDeliciousとほぼ同じ但し、OrePAN使ってます

Page 20: Use Carton

Mirrorの指定• PERL_CPANM_OPTを使う• まちがい

• PERL_CARTON_MIRRORを使う• せいかい

Page 21: Use Carton

PERL_CARTON_MIRROR

• defaultはcpan.metacpan.org• PERL_CPAN_OPTがダメな理由•内部でlocal $ENV{PERL_CPANM_OPT}

Page 22: Use Carton

移行作業は一緒

Page 23: Use Carton

俺はこう思う• Carton いいね!•お手軽に依存モジュールが管理できる•Makefile.PLだけよりは安心•シンプルなのでスライドに書くことがない•まだALPHAなので自己責任で使おう

Page 24: Use Carton

おまけ

Page 25: Use Carton

• perlbrew install-cpanm• perlbrew install perl-5.14.2• perlbrew lib create $PROJECT• perlbrew switch perl-5.14.2@$PROJECT• cpanm install Carton• cd $PROJECT_DIR• carton install • carton exec -- plackup -a app.psgi

プロジェクト環境の構築

Page 26: Use Carton

ご清聴ありがとうございました