heroku で 最新の perl を使う

ダウンロードすれば使えるリロケータブル perl はまさに heroku などの paas にぴったりである。

試しに heroku-buildpack-perl を relocatable perl 5.20.1 を使うようにかえてみた。

使い方

build-pack として上記のものを指定するだけである。

簡単な例を書くと以下の通り。(heroku login はすでにできているとする。)

  1. app.psgi と cpanfile を用意し git add . && git commit -am init しておく。

     $ ls
     app.psgi cpanfile
    
     $ cat app.psgi
     sub { [200, [], ["hello from perl $^V"]]; };
    
     $ cat cpanfile
     requires "Plack";
     requires "Starman"; # なくてもいい
    
  2. heroku create で build-pack を指定する。

     $ heroku create --buildpack 'https://github.com/shoichikaji/heroku-buildpack-perl.git#relocatable-perl'
    
  3. deploy。

     $ git push heroku master
     Initializing repository, done.
     Counting objects: 47, done.
     Delta compression using up to 8 threads.
     Compressing objects: 100% (46/46), done.
     Writing objects: 100% (47/47), 4.89 KiB | 0 bytes/s, done.
     Total 47 (delta 13), reused 0 (delta 0)
    
     -----> Fetching custom git buildpack... done
     -----> Perl/PSGI app detected
     -----> Vendoring Perl
            Using perl v5.20.1
     -----> Installing dependencies
            Successfully installed ExtUtils-Config-0.008
            ... (略) ...
            Successfully installed Starman-0.4010
            29 distributions installed
     -----> Installing Starman
            Starman is up to date. (0.4010)
     -----> Changing shebang lines
            changed shebang line of /tmp/build_ea573262-0e0c-48c3-ad01-456f07522687/vendor/bin/net-server
            changed shebang line of /tmp/build_ea573262-0e0c-48c3-ad01-456f07522687/vendor/bin/plackup
            changed shebang line of /tmp/build_ea573262-0e0c-48c3-ad01-456f07522687/vendor/bin/starman
     -----> Discovering process types
            Procfile declares types     -> (none)
            Default types for Perl/PSGI -> web
    
     -----> Compressing... done, 18.4MB
     -----> Launching... done, v5
            http://glacial-shore-7685.herokuapp.com/ deployed to Heroku
    
     To git@heroku.com:glacial-shore-7685.git
      * [new branch]      master -> master
    
  4. heroku open でアクセス! hello from perl v5.20.1 と表示される(はず)。