鈍足ランナーのIT日記

走るのが好きな5流のITエンジニアのブログ。

趣味の範囲は広いけど、どれも中途半端なクソブロガー楽しめるWebアプリを作ってあっと言わせたい。サーバーサイドPerl(Mojolicious)、クライアントサイドVue.js。Arduinoにも触手を伸ばす予定。

Mojolicious::Plugin::Web::Auth(twitter)がStarmanやStartletで動かない?

Twitter認証画面で許可を押して、コールバックURLのhttp://atndfc.dokechin.com/auth/twitter/callbackにリダイレクトされたあとに 以下のエラーとなってしまった。

Can't call method "session" on an undefined value at /home/tatsumi/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/Mojolicious/Plugin/Web/Auth/OAuth.pm line 50.

f:id:kechiya:20130711002338j:plain

Mojolicious::Plugin::Web::Auth::OAuth.pm 50行目はこんな感じとなっている。 $cが未定義の値とはいったいどういうことなんだろう。

session => sub{$c->session(@_) },

ローカル環境では動くのですが・・・ 何が悪いのか今のところ、全く見当がつかない。 何か見落としているはずなんだろうけど。

結局本番機でも、morboやサーバ指定なしのplackupなら動いた

本番機で以下のようにして、WEBアプリを起動したら、しっかりと動いた。

morbo -l http://*:8006 script/hoge

また、開発機で認証用のサンプルMojoliciousLiteアプリを以下のようにして動かしても 動いた。

plackup myapp.pl

本番機は、こんな感じでrunスクリプトを書いて、動かしている。

#!/bin/sh
exec /home/tatsumi/perl5/perlbrew/perls/perl-5.16.1/bin/start_server --port=8006 --interval=10 -- /home/tatsumi/perl5/perlbrew/perls/perl-5.16.1/bin/plackup -s Starman -MFindBin -a /home/tatsumi/atndfc/atndfc.psgi
``````

本番機でも以下のようにしたらエラーにならなかった。

/home/tatsumi/perl5/perlbrew/perls/perl-5.16.1/bin/plackup /home/tatsumi/atndfc/atndfc.psgi

本番機で、サーバをStarmanにしたらエラーになった。

/home/tatsumi/perl5/perlbrew/perls/perl-5.16.1/bin/plackup -s Starman /home/tatsumi/atndfc/atndfc.psgi

本番機で、サーバをStarletにしてもエラーになった。

/home/tatsumi/perl5/perlbrew/perls/perl-5.16.1/bin/plackup -s Starlet /home/tatsumi/atndfc/atndfc.psgi

結局、Mojolicious::Plugin::Web::Auth+StarmanまたはStartletの組み合わせで動かす方法がわからなかった。

とりあえず、サーバ指定なしで、plackupだけで動かすようにしました。どなたかやり方がわかる人教えてほしいです。

★追記 後日の状況