タグ

cartonに関するlizyのブックマーク (25)

  • Carmel

    I shipped a few trial versions of Carmel to CPAN. Carmel is intended to be a successor of Carton, with a better internal structure and an interesting architecture change. As a starter, here’s how Carton works: use local::lib and cpanm’s -L option to install modules locally to ./local Scan meta/install.json file cpanm created under ./local and create a snapshot file for the next run, if there’s a s

  • Carton and perl version support: miyagawa/heroku-buildpack-perl

    Carton and perl version support: miyagawa/heroku-buildpack-perl Link: Carton and perl version support: miyagawa/heroku-buildpack-perl Dependencies can be declared using cpanfile and frozen with carton install. The buildpack will install these dependencies using Carton into a cached ./local directory. I implemented the experimental buildpack update to enable Carton and perl versions support. This e

  • 社内Cartonコードリーディング会第一回のメモ - $shibayu36->blog;

    最近社内でCartonを使う機会が増えてきているのですが、そもそもCarton自体が何やってるかちゃんと把握できてなくてハマったりするので、社内有志でコードリーディング会を開催しています。今回は第一回のときに出てきに作ったメモを公開します。そのままメモを公開しただけなのでかなり雑です。間違ってることも多いと思います。 今回の目的 carton install周りで何が起こっているかざっと把握する 疑問とか snapshotが環境によってずれることがあるけどどうして? --deployment, --cachedとかがついた時に何が変わるか cachedしてもcpanにfallbackしてたけどなぜ インストール先の切替はどうするのか そもそもversion固定どうやってるか 順序は関係なくversionが固定されるのか cpanfileはperlスクリプトとして認識されるのか local以

    社内Cartonコードリーディング会第一回のメモ - $shibayu36->blog;
  • Carton考2014 | おそらくはそれさえも平凡な日々

    こうするのがいいかなーと思ってる。経緯は端折って大枠だけ。Webアプリケーションプロジェクトの場合です。 cpanfileちゃんと書いてコミット 今やどこでもやってますね。scan-prereqs-cpanfileも便利です。 開発者は各自carton installでモジュールをインストール。プロジェクトごとにPerlをビルドしたりしてる場合は、cpanm --installdeps .でも別に良い。 CI環境でcpanfile.snapshotを作る CI環境は必ず以下のとおりとする。 番環境と同じアーキテクチャ 番環境と同じバージョンのPerl まっさらな状態(Globalに何のモジュールも入っていない) CIにcarton installもさせて、必要なモジュールをlocal/に入れてテストさせる。毎回サラからcarton installしてたら時間かかるので、git pull

    Carton考2014 | おそらくはそれさえも平凡な日々
  • Secrets of cpanm cpanfile Support - Modern Perl Programming

    On a previous client's project, I set up Carton to manage dependencies. This worked out really well, but I came to realize that most of the benefit on that project was using a single cpanfile to list all dependencies. (Allison wrote a tiny Makefile to manage something else on the project, so it made a lot of sense to add make targets to "update all dependencies" or "use Sqitch to deploy the curren

  • carton化を進めています - $shibayu36->blog;

    OrePAN的なやり方でモジュール管理していたプロジェクトのcarton化を進めているので、進捗をメモしてみる。 整合性が取れるまでcarton installを進める 現状のモジュールのバージョンを完全に固定したままで、carton installしたらあまりうまく行かなかった。プロジェクトにはテストがかなりあるので、まあ全部バージョン上がっても良いとして、carton installする。テストを走らせてみて、バージョンを固定しないと動かないようなモジュールはcpanfileに記述していった。 $ carton install $ # なんかおかしかったらcpanfileを編集 $ carton install cpanfileには以下の様な形でモジュールを固定していった。 requires 'HTTP::Message' => '<= 6.02'; またinstallが終わった後はc

    carton化を進めています - $shibayu36->blog;
  • Modern Perl toolchain for Git managed web apps | kappataumu.com

  • miyagawa/cpan-module-bootstrap

    Link: miyagawa/cpan-module-bootstrap Creates a shell script and cpanm bundle to install modules on a remote machine without cpanm installed and no network connection.Another YAPC::Asia is over, and now Carton gets the big traction. Carton solves the problem of “CPAN breaking my app”, and installing modules on a deployment host is easier and more stable then ever. Now there is one remaining piece o

    lizy
    lizy 2013/09/26
    従来だとcpanm -save-dists+OrePANで自前セットを作っていたのが簡単にできるのかな|どうやらそんな感じのものでした
  • xbuildとCartonを利用したPerlアプリケーションのデプロイ環境の構築 - Hateburo: kazeburo hatenablog

    最近、新しいサーバでサービスを動かしたりベンチマークを取る場合には、モリスさんのxbuildを使ってる https://github.com/tagomoris/xbuild xbuildを使うとローカルの任意のディレクトリにPerl(Ruby,Node.js,PHP,Pythonにも対応)のランタイムを設置してくれる。perlbrewやplenvとどこが違うのかというと、xbuildは単にインストールするだけでバージョン切り替えなどの機能は提供しない。使うにはインストール後にPATHを通す必要がある。また、デフォルトでCartonやcpanm、Server::Starterがインストールされてるのも特徴。 使い方 $ git clone https://github.com/tagomoris/xbuild.git $ ./xbuild/perl-install 5.18.1 /path

    xbuildとCartonを利用したPerlアプリケーションのデプロイ環境の構築 - Hateburo: kazeburo hatenablog
  • YappoLogs: 配布するスクリプトが依存しているモジュールを実行時にスマートに入れてもらう方法

    配布するスクリプトが依存しているモジュールを実行時にスマートに入れてもらう方法 社内ツールなどで Perl スクリプトを配布する時にいちばん気になるトピックとしては、スクリプト中で依存しているモジュールをどうやってインストールさせるか? という所ですね、最近は toolchain が強まってきて cpanm --installdeps . とか carton install をやってもらえば良いのですが、たかだかちょっとしたツールだったら git clone してもらってすぐにスクリプト叩いてもらいたんじゃんすか。 ってことで、スマートかつクールにこの問題に対処するスクリプトの雛形を書いてみました。 core module 以外には Carton を予め入れておく必要があるのがまだまだ敷居高いですが、エンジニア向けのツールだったらだいぶ手間は下がるでしょう。 ポイントとしては、コードで使う

    lizy
    lizy 2013/09/05
    carton install,execを隠蔽するようなshell scriptを用意してそっちを実行してもらう?
  • Carton 1.0 時代の Web アプリケーション開発フロー - tokuhirom's blog

    Carton 1.0 がでたところで、Web アプリケーション開発のフローを一度見直しておきたい、そんな人も多いでしょう。 そんな方のために僕のやりかたをまとめました。各社、議論の叩き台にしていただければよろしいかと存じます。 もっとも重要なことは、、 Carton を使うときに、僕が最重要だと思うことは、できるだけ番環境と開発環境の環境をそろえるということです。CPAN モジュールが番と開発でバージョンちがうから挙動がちがってた!! なんてのは時間の無駄ですし、よくないことですからね。 ですから、各開発環境と番環境をできるだけそろえることを意識していきたいとおもいます。 DarkPAN は使ってない そんなに DarkPAN 的なのを使うほど、DarkPAN 的なオレオレモジュールがないので、git submodule で管理しています。 【201308061241update】

  • Carton 1.0 is released

    Carton v1.0.0 is released on CPAN. Since the first announcement at YAPC::NA 2011, I’m sure it has taken more time than necessary, but after my attempt to grok Ruby’s bundler more, i refactored and rewrote most of the code, and I think it’s usable for the most of production apps. I’ve been using it on my production website that handles millions of requests, and I know a lot of businesses use carton

    lizy
    lizy 2013/08/05
    普段はインストールに使用したtarファイルを保存して、別環境はそれを入れるようにしてるけど、cartonなら楽にバージョン固定できるのかな
  • Carton 1.0 at OSCON 2013

    Introducing what's new in Carton at O'Reilly Open Source Convention 2013.

    Carton 1.0 at OSCON 2013
    lizy
    lizy 2013/07/25
    local-mirrorによるfreezeよりもっと進化したもの
  • ゆーすけべー日記

    ここ最近の僕の開発で指標になっているのは「システムとしてのクオリティを上げるか」であり、それって当然のごとく行われているかもしれなくて、いわゆる Quality Assurance = QA なんて言葉があったり、某社では Test Engineer の方がいたりするわけです。ただ、あまりにも僕としては「ずさんな」ところが多々あると考えています。「よしAを変更した → デプロイ → Bがエラー出てる」なんてことがないように「機能が望むように動作しているか」をテストコードで担保しようと努めている次第です。例えば、先日サービス内で使用している Flickr API の一部メソッドが正常に機能しない( どんなに一般的な語彙で探しても検索結果が空で返ってくる )なんてことがありましたが、テストコードのおかげで問題の切り分け、つまり、これは当に Web API が壊れているのだ!ということがテスト

    ゆーすけべー日記
  • 1. Perl環境の設定 : Practical Modern Perl (仮)

    注:稿はまだ書きかけです!書きかけです!まだ一般に知らしめようとする前にブクマされました!w 間違いの指摘やコメント等は lestrrat @twitter にください! Perl環境の設定方法はここ数年で大きく進化し、変わってきました。ここではアプリケーションのデプロイも見据えた、モダンなperl環境の整え方を紹介していきます。具体的にはperl体や外部モジュールのインストール方法を解説したのち、Perlを使ったアプリケーションを管理・運用していく際に依存関係等はアプリケーション毎に管理できるようにしてグローバル環境に可能な限り干渉しない方法を紹介します。 目次 1.1 Perl体のインストール 1.2 依存モジュールの管理・インストール 1.3 Cartonによるアプリケーションの実行環境の構築 tl;dr 稿を読む前にポイントだけ知りたい!という方向けのまとめです: OSに同

    1. Perl環境の設定 : Practical Modern Perl (仮)
    lizy
    lizy 2013/04/02
    cpanm自体が依存するモジュールを固定する(ローカルから入れる)方法ってないのかな
  • cpanfile

    7. 依存の定義 use strict; use warnings; use ExtUtils::MakeMaker; WriteMakefile( PREREQ_PM => { 'LWP' => '6.00' } ); 8. Installと実行 $ cpanm -L local --installdeps -n . $ perl -Mlib::core::only -Mlib=local/ lib/perl5 get.pl 501 Protocol scheme 'https' is not supported (LWP::Protocol::https not installed)

    cpanfile
    lizy
    lizy 2013/03/11
    今までバージョン固定するには自分でtarをダウンロードしてそこからインストールさせてたけど、それが不要になるのか
  • cpanm ってなんですか? carton ってなんですか?利点はなんですか? - tokuhirom's blog

    なんか適当に。 cpanm は cpan モジュールをいれてくれる人です。元々は某 VPS のメモリがたりなくて CPAN shell が起動しないからなんとかしよう、みたいなのがきっかけだった気がしますが、今となってはどうでもいいことです。 とりあえずつかっとけば安心なかんじなのが cpanm となっています。 carton ってのは local/lib/perl5/ 以下にアプリの依存モジュールをぶっこんでくれる人です。carton.lock というファイルにモジュールのバージョンとか記録しててくれて、いいかんじにバージョンを固定できるので、他の環境とバージョンをそろえることができて便利です。 たんに local/ 以下にライブラリいれたいだけなら cpanm --installdeps -L local/ . とかしてもだいたいおなじです。 carton exec は、perl -M

  • plenv + cpanm + carton でPerlの開発環境を構築する | Act as Professional

    Perl情弱の@HIROCASTERでございませう。 GrowthForecastとか羨ましすぎるので、最近のPerlの環境はどうやってつくるのか調べた。 今回はplenv+cpanm+cartonという環境を構築します。 Rubyでいうところのplenv+gem+bundleという感じである。 環境はUbuntu 12.04.2 LTSとMac(Mountain Lion)での確認をしています。 plenvまず、OSに付属しているPerlなどを利用して、わけわからないことになって、挫折するのがいつものパターン。 そこで、Perlを複数バージョンインストールして、OS付属のPerlとは別で管理できるplenvをインストールする。 Rubyでいうところのrbenvのようなもの。 CPANからインストールできるらしいけど、今回はGitでcloneしてインストールすることにする。 $ git c

    plenv + cpanm + carton でPerlの開発環境を構築する | Act as Professional
    lizy
    lizy 2013/02/18
    perlbrewの時代は終わってたのか
  • carton + 開発版の cpanm で、特定のバージョンのモジュールをつかいこなす! - tokuhirom's blog

    開発版の cpanm で、META file の version range がサポートされるようになりました。 CPAN の META spec v2.0 では、version range がサポートされていて、以下のような柔軟な指定が可能となっています。 Some fields (prereq, optional_features) indicate the particular version(s) of some other module that may be required as a prerequisite. This section details the Version Range type used to provide this information. The simplest format for a Version Range is just the vers

  • 開発メモ#3 : レガシーなCGIアプリケーションのリファクタリング - naoyaのはてなダイアリー

    開発メモその3です。今回は Perl のおはなし。 何年も前に作ったウェブアプリケーションのコードを開いてみたら黒歴史なコードが出てきて憂な気分になる、そんな経験ありませんか。私はあります。ずっとそんな現実から目を背けて生きてきました。 さて、先日 Perl + CGI で書いて Apache::Registry で高速化している、実行環境が Apache に癒着した CGIアプリケーションを発見しました。おえ〜っ。一から作り直したい気持ちをぐっと堪えて、これを Plack 化したりとリフォームしていくとしましょう。その過程を以下記します。劇的ビフォア・アフター! ・・・とかは期待せず、地道な変更を積み重ねていくのがコツです。 方針 いきなりコードをがりがり書き換えていくというよりは、試行錯誤のしやすい環境に移行させていきながらリフォームを進めます。遠回りですが、結果的にその後の運用が楽

    開発メモ#3 : レガシーなCGIアプリケーションのリファクタリング - naoyaのはてなダイアリー