m_shige1979のささやかな抵抗と欲望の日々

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

なんとなく作ったサイト

http://www.it-check-matome.info/


Github(注意すること)

https://github.com/mshige1979

MojoliciousをVM環境に構築して、Herokuで公開(お試し版)

フレームワーク:Mojolicious

PerlフレームワークMojoliciousで公開したときの備忘録

環境

 VMPlayer 6(Ubuntu)32bit
 Perl 5.x

「cpanm Mojolicious」でインストール
m-shige1979@mshige1979-virtual-machine:~/sample4$ cpanm Mojolicious
--> Working on Mojolicious
Fetching http://www.cpan.org/authors/id/S/SR/SRI/Mojolicious-4.41.tar.gz ... OK
Configuring Mojolicious-4.41 ... OK
Building and testing Mojolicious-4.41 ... OK
Successfully installed Mojolicious-4.41
1 distribution installed
m-shige1979@mshige1979-virtual-machine:~/sample4$

m-shige1979@mshige1979-virtual-machine:~/sample4$ cd ../
m-shige1979@mshige1979-virtual-machine:~$ mkdir sample_mojo1
m-shige1979@mshige1979-virtual-machine:~$ cd sample_mojo1/
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ vim app.pl
app.plの編集
#!/usr/bin/env perl
use strict;
use warnings;

use Mojolicious::Lite;

get '/' => sub {
    # パラメータを取得
    my $self = shift;

    # テンプレート変数をセット
    $self->stash('title', 'test site');
    $self->stash('name', 'm_shige1979');

    # indexを割り当て
    $self->render('index');
};

app->start;
__DATA__

@@ index.html.ep
<!DOCTYPE html>
<html>
    <head>
        <title><%= $title %></title>
    </head>
    <body>
        こんにちは <%= $name %> さん
    </body>
</html>
実行
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ morbo app.pl
[Sat Sep 28 09:15:41 2013] [info] Listening at "http://*:3000".
Server available at http://127.0.0.1:3000.
確認

f:id:m_shige1979:20130928092355j:plain

Herokuへの公開

ubuntuにherokuのツールキットをインストール
m-shige1979@mshige1979-virtual-machine:~$ sudo wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh
[sudo] password for m-shige1979:
This script requires superuser access to install apt packages.
You will be prompted for your password by sudo.
[sudo] password for m-shige1979:
--2013-09-28 13:29:06--  https://toolbelt.heroku.com/apt/release.key
toolbelt.heroku.com (toolbelt.heroku.com) をDNSに問いあわせています... 50.16.215.104, 184.73.171.204, 174.129.23.118, ...
toolbelt.heroku.com (toolbelt.heroku.com)|50.16.215.104|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 1737 (1.7K) [application/octet-stream]
`STDOUT' に保存中

100%[===================================================================================================================================================>] 1,737       --.-K/s   時間 0s

2013-09-28 13:29:08 (8.87 MB/s) - stdout へ出力完了 [1737/1737]

OK
ヒット http://archive.ubuntulinux.jp raring Release.gpg
ヒット http://archive.ubuntulinux.jp raring Release.gpg
ヒット http://archive.ubuntulinux.jp raring Release
ヒット http://archive.ubuntulinux.jp raring Release
ヒット http://archive.ubuntulinux.jp raring/main Sources
ヒット http://archive.ubuntulinux.jp raring/main i386 Packages
ヒット http://jp.archive.ubuntu.com raring Release.gpg
取得:1 http://jp.archive.ubuntu.com raring-updates Release.gpg [933 B]
ヒット http://jp.archive.ubuntu.com raring-backports Release.gpg
ヒット http://archive.ubuntulinux.jp raring/multiverse Sources
ヒット http://archive.ubuntulinux.jp raring/multiverse i386 Packages
取得:2 http://security.ubuntu.com raring-security Release.gpg [933 B]
ヒット http://jp.archive.ubuntu.com raring Release
取得:3 http://jp.archive.ubuntu.com raring-updates Release [40.8 kB]
ヒット http://downloads-distro.mongodb.org dist Release.gpg
取得:4 http://security.ubuntu.com raring-security Release [40.8 kB]
ヒット http://jp.archive.ubuntu.com raring-backports Release
ヒット http://jp.archive.ubuntu.com raring/main Sources
ヒット http://jp.archive.ubuntu.com raring/restricted Sources
ヒット http://jp.archive.ubuntu.com raring/universe Sources
ヒット http://jp.archive.ubuntu.com raring/multiverse Sources
ヒット http://jp.archive.ubuntu.com raring/main i386 Packages
ヒット http://jp.archive.ubuntu.com raring/restricted i386 Packages
ヒット http://jp.archive.ubuntu.com raring/universe i386 Packages
無視 http://archive.ubuntulinux.jp raring/main Translation-ja_JP
無視 http://archive.ubuntulinux.jp raring/main Translation-ja
ヒット http://jp.archive.ubuntu.com raring/multiverse i386 Packages
無視 http://archive.ubuntulinux.jp raring/main Translation-en
無視 http://archive.ubuntulinux.jp raring/multiverse Translation-ja_JP
無視 http://archive.ubuntulinux.jp raring/multiverse Translation-ja
ヒット http://jp.archive.ubuntu.com raring/main Translation-ja
ヒット http://downloads-distro.mongodb.org dist Release
無視 http://archive.ubuntulinux.jp raring/multiverse Translation-en
ヒット http://jp.archive.ubuntu.com raring/main Translation-en
取得:5 http://toolbelt.heroku.com ./ Release.gpg [490 B]
ヒット http://jp.archive.ubuntu.com raring/multiverse Translation-ja
ヒット http://jp.archive.ubuntu.com raring/multiverse Translation-en
取得:6 http://security.ubuntu.com raring-security/main Sources [43.4 kB]
ヒット http://jp.archive.ubuntu.com raring/restricted Translation-ja
ヒット http://jp.archive.ubuntu.com raring/restricted Translation-en
ヒット http://jp.archive.ubuntu.com raring/universe Translation-ja
ヒット http://jp.archive.ubuntu.com raring/universe Translation-en
ヒット http://downloads-distro.mongodb.org dist/10gen i386 Packages
取得:7 http://jp.archive.ubuntu.com raring-updates/main Sources [70.4 kB]
取得:8 http://jp.archive.ubuntu.com raring-updates/restricted Sources [14 B]
取得:9 http://toolbelt.heroku.com ./ Release [1,673 B]
取得:10 http://security.ubuntu.com raring-security/restricted Sources [14 B]
取得:11 http://jp.archive.ubuntu.com raring-updates/universe Sources [72.3 kB]
取得:12 http://jp.archive.ubuntu.com raring-updates/multiverse Sources [2,266 B]
取得:13 http://security.ubuntu.com raring-security/universe Sources [9,292 B]
取得:14 http://jp.archive.ubuntu.com raring-updates/main i386 Packages [179 kB]
取得:15 http://security.ubuntu.com raring-security/multiverse Sources [2,266 B]
取得:16 http://jp.archive.ubuntu.com raring-updates/restricted i386 Packages [14 B]
取得:17 http://jp.archive.ubuntu.com raring-updates/universe i386 Packages [148 kB]
取得:18 http://toolbelt.heroku.com ./ Packages [1,042 B]
取得:19 http://security.ubuntu.com raring-security/main i386 Packages [114 kB]
取得:20 http://jp.archive.ubuntu.com raring-updates/multiverse i386 Packages [3,864 B]
ヒット http://jp.archive.ubuntu.com raring-updates/main Translation-en
ヒット http://jp.archive.ubuntu.com raring-updates/multiverse Translation-en
ヒット http://jp.archive.ubuntu.com raring-updates/restricted Translation-en
ヒット http://jp.archive.ubuntu.com raring-updates/universe Translation-en
ヒット http://jp.archive.ubuntu.com raring-backports/main Sources
ヒット http://jp.archive.ubuntu.com raring-backports/restricted Sources
ヒット http://jp.archive.ubuntu.com raring-backports/universe Sources
ヒット http://jp.archive.ubuntu.com raring-backports/multiverse Sources
取得:21 http://security.ubuntu.com raring-security/restricted i386 Packages [14 B]
ヒット http://jp.archive.ubuntu.com raring-backports/main i386 Packages
ヒット http://jp.archive.ubuntu.com raring-backports/restricted i386 Packages
ヒット http://jp.archive.ubuntu.com raring-backports/universe i386 Packages
ヒット http://jp.archive.ubuntu.com raring-backports/multiverse i386 Packages
取得:22 http://security.ubuntu.com raring-security/universe i386 Packages [38.0 kB]
ヒット http://jp.archive.ubuntu.com raring-backports/main Translation-en
ヒット http://jp.archive.ubuntu.com raring-backports/multiverse Translation-en
取得:23 http://security.ubuntu.com raring-security/multiverse i386 Packages [3,864 B]
ヒット http://jp.archive.ubuntu.com raring-backports/restricted Translation-en
ヒット http://jp.archive.ubuntu.com raring-backports/universe Translation-en
ヒット http://security.ubuntu.com raring-security/main Translation-en
ヒット http://security.ubuntu.com raring-security/multiverse Translation-en
無視 http://toolbelt.heroku.com ./ Translation-ja_JP
ヒット http://security.ubuntu.com raring-security/restricted Translation-en
無視 http://toolbelt.heroku.com ./ Translation-ja
無視 http://toolbelt.heroku.com ./ Translation-en
ヒット http://security.ubuntu.com raring-security/universe Translation-en
無視 http://jp.archive.ubuntu.com raring/main Translation-ja_JP
無視 http://jp.archive.ubuntu.com raring/multiverse Translation-ja_JP
無視 http://jp.archive.ubuntu.com raring/restricted Translation-ja_JP
無視 http://jp.archive.ubuntu.com raring/universe Translation-ja_JP
無視 http://jp.archive.ubuntu.com raring-updates/main Translation-ja_JP
無視 http://jp.archive.ubuntu.com raring-updates/main Translation-ja
無視 http://jp.archive.ubuntu.com raring-updates/multiverse Translation-ja_JP
無視 http://jp.archive.ubuntu.com raring-updates/multiverse Translation-ja
無視 http://jp.archive.ubuntu.com raring-updates/restricted Translation-ja_JP
無視 http://jp.archive.ubuntu.com raring-updates/restricted Translation-ja
無視 http://jp.archive.ubuntu.com raring-updates/universe Translation-ja_JP
無視 http://jp.archive.ubuntu.com raring-updates/universe Translation-ja
無視 http://jp.archive.ubuntu.com raring-backports/main Translation-ja_JP
無視 http://jp.archive.ubuntu.com raring-backports/main Translation-ja
無視 http://jp.archive.ubuntu.com raring-backports/multiverse Translation-ja_JP
無視 http://downloads-distro.mongodb.org dist/10gen Translation-ja_JP
無視 http://jp.archive.ubuntu.com raring-backports/multiverse Translation-ja
無視 http://jp.archive.ubuntu.com raring-backports/restricted Translation-ja_JP
無視 http://jp.archive.ubuntu.com raring-backports/restricted Translation-ja
無視 http://jp.archive.ubuntu.com raring-backports/universe Translation-ja_JP
無視 http://jp.archive.ubuntu.com raring-backports/universe Translation-ja
無視 http://downloads-distro.mongodb.org dist/10gen Translation-ja
無視 http://downloads-distro.mongodb.org dist/10gen Translation-en
無視 http://security.ubuntu.com raring-security/main Translation-ja_JP
無視 http://security.ubuntu.com raring-security/main Translation-ja
無視 http://security.ubuntu.com raring-security/multiverse Translation-ja_JP
無視 http://security.ubuntu.com raring-security/multiverse Translation-ja
無視 http://security.ubuntu.com raring-security/restricted Translation-ja_JP
無視 http://security.ubuntu.com raring-security/restricted Translation-ja
無視 http://security.ubuntu.com raring-security/universe Translation-ja_JP
無視 http://security.ubuntu.com raring-security/universe Translation-ja
773 kB を 12秒 で取得しました (62.3 kB/s)
パッケージリストを読み込んでいます... 完了
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
  foreman heroku libruby1.9.1 libyaml-0-2 ruby1.9.1
提案パッケージ:
  ruby1.9.1-examples ri1.9.1 graphviz ruby1.9.1-dev ruby-switch
以下のパッケージが新たにインストールされます:
  foreman heroku heroku-toolbelt libruby1.9.1 libyaml-0-2 ruby1.9.1
アップグレード: 0 個、新規インストール: 6 個、削除: 0 個、保留: 252 個。
5,056 kB のアーカイブを取得する必要があります。
この操作後に追加で 13.3 MB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu/ raring/main libyaml-0-2 i386 0.1.4-2build1 [55.3 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu/ raring-updates/main libruby1.9.1 i386 1.9.3.194-8.1ubuntu1.1 [4,208 kB]
取得:3 http://toolbelt.heroku.com/ubuntu/ ./ foreman 0.60.0 [89.5 kB]
取得:4 http://toolbelt.heroku.com/ubuntu/ ./ heroku 2.41.0 [665 kB]
取得:5 http://jp.archive.ubuntu.com/ubuntu/ raring-updates/main ruby1.9.1 i386 1.9.3.194-8.1ubuntu1.1 [37.6 kB]
取得:6 http://toolbelt.heroku.com/ubuntu/ ./ heroku-toolbelt 2.41.0 [626 B]
5,056 kB を 10秒 で取得しました (503 kB/s)
以前に未選択のパッケージ libyaml-0-2:i386 を選択しています。
(データベースを読み込んでいます ... 現在 191210 個のファイルとディレクトリがインストールされています。)
(.../libyaml-0-2_0.1.4-2build1_i386.deb から) libyaml-0-2:i386 を展開しています...
以前に未選択のパッケージ libruby1.9.1 を選択しています。
(.../libruby1.9.1_1.9.3.194-8.1ubuntu1.1_i386.deb から) libruby1.9.1 を展開しています...
以前に未選択のパッケージ ruby1.9.1 を選択しています。
(.../ruby1.9.1_1.9.3.194-8.1ubuntu1.1_i386.deb から) ruby1.9.1 を展開しています...
以前に未選択のパッケージ foreman を選択しています。
(.../foreman_0.60.0_all.deb から) foreman を展開しています...
以前に未選択のパッケージ heroku を選択しています。
(.../archives/heroku_2.41.0_all.deb から) heroku を展開しています...
以前に未選択のパッケージ heroku-toolbelt を選択しています。
(.../heroku-toolbelt_2.41.0_all.deb から) heroku-toolbelt を展開しています...
man-db のトリガを処理しています ...
libyaml-0-2:i386 (0.1.4-2build1) を設定しています ...
libruby1.9.1 (1.9.3.194-8.1ubuntu1.1) を設定しています ...
ruby1.9.1 (1.9.3.194-8.1ubuntu1.1) を設定しています ...
update-alternatives: /usr/bin/gem (gem) を提供するために 自動モード で /usr/bin/gem1.9.1 を使います
update-alternatives: /usr/bin/ruby (ruby) を提供するために 自動モード で /usr/bin/ruby1.9.1 を使います
foreman (0.60.0) を設定しています ...
heroku (2.41.0) を設定しています ...
heroku-toolbelt (2.41.0) を設定しています ...
libc-bin のトリガを処理しています ...
ldconfig deferred processing now taking place
m-shige1979@mshige1979-virtual-machine:~$

バージョンの確認
m-shige1979@mshige1979-virtual-machine:~$ heroku --version
heroku-toolbelt/2.41.0 (i686-linux) ruby/1.9.3
m-shige1979@mshige1979-virtual-machine:~$
認証の確認(よくわからんから「heroku login」で認証する)
m-shige1979@mshige1979-virtual-machine:~$ heroku login
Enter your Heroku credentials.
Email: m_shige1979のメールアドレス
Password (typing will be hidden):
Authentication successful.
m-shige1979@mshige1979-virtual-machine:~$
アプリを確認し、「cpanfile」に依存パッケージを設定
m-shige1979@mshige1979-virtual-machine:~$ cd sample_mojo1/
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ mv app.pl app.psgi
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ ls
app.psgi
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ mkdir lib
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ vim cpanfile
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ cat cpanfile
requires 'Plack', '1.0000';
requires 'DBI', '1.6';

m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$
gitの初期設定というかgitの設定全然やってなかった
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ git config --global user.email "m_shige1979のメールアドレス"
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ git config --global user.name "m_shige1979"
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$
heroku上にアプリを作成
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ heroku create --stack cedar --buildpack https://github.com/miyagawa/heroku-buildpack-perl.git
Creating guarded-coast-9763... done, stack is cedar
BUILDPACK_URL=https://github.com/miyagawa/heroku-buildpack-perl.git
http://guarded-coast-9763.herokuapp.com/ | git@heroku.com:guarded-coast-9763.git
Git remote heroku added
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$
gitリポジトリを追加
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ git init
Initialized empty Git repository in /home/m-shige1979/sample_mojo1/.git/
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ git add .
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ git commit -m "init commit"
[master (root-commit) 9f73e57] init commit
 2 files changed, 35 insertions(+)
 create mode 100644 app.psgi
 create mode 100644 cpanfile
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$
リモート先がherokuか確認
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ git remote
heroku
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$
デプロイしてみる
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ git push heroku master
The authenticity of host 'heroku.com (herokuのIPアドレス?)' can't be established.
RSA key fingerprint is なんかのキー情報.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'heroku.com,herokuのIPアドレス?' (RSA) to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$

なんかキーの認証に失敗した。

鍵を作成する
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ cd ~/
m-shige1979@mshige1979-virtual-machine:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/m-shige1979/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/m-shige1979/.ssh/id_rsa.
Your public key has been saved in /home/m-shige1979/.ssh/id_rsa.pub.
The key fingerprint is:
なんかゴニョゴニョしている情報?
アカウントしているログインを確認
m-shige1979@mshige1979-virtual-machine:~$ heroku auth:whoami
m_shige1979のメールアドレス
m-shige1979@mshige1979-virtual-machine:~$
鍵を登録
m-shige1979@mshige1979-virtual-machine:~$ heroku keys:add ~/.ssh/id_rsa.pub
Uploading SSH public key /home/m-shige1979/.ssh/id_rsa.pub... done
m-shige1979@mshige1979-virtual-machine:~$
再度デプロイする
m-shige1979@mshige1979-virtual-machine:~$ cd sample_mojo1/
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ git push heroku master
Counting objects: 4, done.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 649 bytes, done.
Total 4 (delta 0), reused 0 (delta 0)

-----> Fetching custom git buildpack... done
-----> Perl/PSGI app detected
-----> Bootstrapping cpanm
       Successfully installed version-0.9904 (upgraded from 0.77)
       Successfully installed Module-Metadata-1.000018
       Successfully installed Test-Simple-0.98 (upgraded from 0.92)
       Successfully installed CPAN-Meta-YAML-0.010
       Successfully installed JSON-PP-2.27202
       Successfully installed Parse-CPAN-Meta-1.4409 (upgraded from 1.39)
       Successfully installed CPAN-Meta-Requirements-2.125
       Successfully installed CPAN-Meta-2.132661
       Successfully installed Perl-OSType-1.006
       Successfully installed ExtUtils-CBuilder-0.280212 (upgraded from 0.2602)
       Successfully installed ExtUtils-ParseXS-3.22 (upgraded from 2.2002)
       Successfully installed Module-Build-0.4007 (upgraded from 0.340201)
       Successfully installed App-cpanminus-1.7001
       13 distributions installed
-----> Installing dependencies
       Successfully installed File-ShareDir-Install-0.05
       Successfully installed ExtUtils-MakeMaker-6.78 (upgraded from 6.55_02)
       Successfully installed Test-Requires-0.07
       Successfully installed Stream-Buffered-0.02
       Successfully installed Class-Inspector-1.28
       Successfully installed File-ShareDir-1.03
       Successfully installed Test-SharedFork-0.21
       Successfully installed Test-TCP-2.01
       Successfully installed HTTP-Tiny-0.036
       Successfully installed Try-Tiny-0.18
       Successfully installed Hash-MultiValue-0.15
       Successfully installed URI-1.60
       Successfully installed Devel-StackTrace-1.30
       Successfully installed LWP-MediaTypes-6.02
       Successfully installed Encode-Locale-1.03
       Successfully installed HTTP-Date-6.02
       Successfully installed IO-HTML-1.00
       Successfully installed Compress-Raw-Bzip2-2.062 (upgraded from 2.020)
       Successfully installed Compress-Raw-Zlib-2.062 (upgraded from 2.020)
       Successfully installed IO-Compress-2.062 (upgraded from 2.020)
       Successfully installed HTTP-Message-6.06
       Successfully installed Test-Tester-0.109
       Successfully installed Test-NoWarnings-1.04
       Successfully installed Test-Deep-0.110
       Successfully installed HTTP-Body-1.17
       Successfully installed Apache-LogFormat-Compiler-0.13
       Successfully installed Filesys-Notify-Simple-0.12
       Successfully installed Devel-StackTrace-AsHTML-0.14
       Successfully installed Plack-1.0029
       Successfully installed DBI-1.628
       30 distributions installed
-----> Installing Starman
       Successfully installed ExtUtils-Helpers-0.021
       Successfully installed ExtUtils-Config-0.007
       Successfully installed ExtUtils-InstallPaths-0.009
       Successfully installed Module-Build-Tiny-0.027
       Successfully installed Net-Server-2.007
       Successfully installed HTTP-Parser-XS-0.16
       Successfully installed Data-Dump-1.22
       Successfully installed Starman-0.4008
       8 distributions installed
-----> Discovering process types
       Procfile declares types     -> (none)
       Default types for Perl/PSGI -> web

-----> Compiled slug size: 3.1MB
-----> Launching... done, v5
       http://guarded-coast-9763.herokuapp.com deployed to Heroku

To git@heroku.com:guarded-coast-9763.git
 * [new branch]      master -> master
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$
ログを確認するとなんかエラーになっている
2013-09-29T03:29:55.422851+00:00 app[web.1]: BEGIN failed--compilation aborted at /app/app.psgi line 5.
2013-09-29T03:29:56.764037+00:00 heroku[web.1]: Process exited with status 2
2013-09-29T03:29:56.767156+00:00 heroku[web.1]: State changed from starting to crashed
2013-09-29T03:29:56.767919+00:00 heroku[web.1]: State changed from crashed to starting
2013-09-29T03:29:58.616775+00:00 heroku[web.1]: Starting process with command `perl -Mlib=$PWD/local/lib/perl5 ./local/bin/starman --preload-app --port 18736`
2013-09-29T03:30:00.051719+00:00 app[web.1]: Error while loading /app/app.psgi: Can't locate Mojolicious/Lite.pm in @INC (@INC contains: /app/local/lib/perl5/x86_64-linux-gnu-thread-multi /app/local/lib/perl5 /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /app/app.psgi line 5.
2013-09-29T03:30:00.051719+00:00 app[web.1]: BEGIN failed--compilation aborted at /app/app.psgi line 5.
2013-09-29T03:30:01.892505+00:00 heroku[web.1]: Process exited with status 2
「/app/app.psgi line 5.」の通り、5行目は「use Mojolicious::Lite;」???
ソース確認
#!/usr/bin/env perl
use strict;
use warnings;

use Mojolicious::Lite;

get '/' => sub {
    # パラメータを取得
    my $self = shift;

    # テンプレート変数をセット
    $self->stash('title', 'test site');
    $self->stash('name', 'm_shige1979');

    # indexを割り当て
    $self->render('index');
};

app->start;
__DATA__

@@ index.html.ep
<!DOCTYPE html>
<html>
    <head>
        <title><%= $title %></title>
    </head>
    <body>
        こんにちは <%= $name %> さん
    </body>
</html>

もしかして、「Mojolicious」ないのか?

cpanfileに追加してみる
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ cat cpanfile
requires 'Plack', '1.0000';
requires 'DBI', '1.6';
requires 'Mojolicious', '2.0';

m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$
再度コミットしてデプロイ
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ git add .
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ git commit -m "cpanfile update"
[master adeb06e] cpanfile update
 1 file changed, 1 insertion(+)
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$ git push heroku master
Warning: Permanently added the RSA host key for IP address 'なんかのIPアドレス' to the list of known hosts.
Counting objects: 5, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 330 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)

-----> Fetching custom git buildpack... done
-----> Perl/PSGI app detected
-----> Installing dependencies
       Successfully installed Mojolicious-4.41
       1 distribution installed
-----> Installing Starman
       Starman is up to date. (0.4008)
-----> Discovering process types
       Procfile declares types     -> (none)
       Default types for Perl/PSGI -> web

-----> Compiled slug size: 3.7MB
-----> Launching... done, v6
       http://guarded-coast-9763.herokuapp.com deployed to Heroku

To git@heroku.com:guarded-coast-9763.git
   9f73e57..adeb06e  master -> master
m-shige1979@mshige1979-virtual-machine:~/sample_mojo1$
結果

f:id:m_shige1979:20130929132953j:plain

できた

とりあえず、ここまで
とりあえず、これをゴニョゴニョしよう

まとめ

ビルドパック作った人たちには感謝します。すごいわこれ。

おまけ

Gitはほとんど触ったことなかったがうまくいくとは…