新しいblogに移行しました

新ブログ "All Yout Bugs Are Belong To Ass" に移行しました!

ラベル BK の投稿を表示しています。 すべての投稿を表示
ラベル BK の投稿を表示しています。 すべての投稿を表示

2012-12-27

[Perl]Email::SendつかったらReturn::Valueにdeprecatedだと怒られた

Email::Send自体がdeprecatedなのですが、Email::SenderはMoose依存だそうなので(Mouseに切り替えるという話は無理だったらしい?)、Email::Send使ってメールを送ることにしました。
ですが、こいつはReturn::Valueというモジュールを内部的に使用していて、これを普通に使おうとすると

Return::Value is deprecated

と言われました。でもEmail::Senderは使いたくないので、

BEGIN {
    $Return::Value::NO_CLUCK = 1;
}
use Email::Send;

としたのでした。だいぶアレ。

[2012/12/28 追記]
なあんてことを某所でぼやぼや言ってたんだけど、寝て起きてたらMail::Krohnというものがつくられていた。激速。本当にすごい。

 http://blog.64p.org/entry/2012/12/28/002634

[2013/07/31 追記]
サンプルに間違いがあったので直しました。

誤: BEGIN { Return::Value::NO_CLUCK = 1; ...
正: BEGIN { $Return::Value::NO_CLUCK = 1; ...

nekoyaさん、ご指摘感謝致します。

それからEmail::SenderはMoose依存ではなくなり、Moo依存になりました。
それに伴い、Email::Krohnは必要なくなったとされ、deleteされました。

2011-04-28

[Linux]ユーザ権限でsvscanbootを立ち上げて色々exportする手間を省く

何が嬉しいか

僕がやっている限りですが、perlbrew環境でもdaemontoolsのrunファイルで色々exportしなくても意図した通りにアプリケーションが動作してくれる、という点が挙げられます。

設定

例えば$HOME/service/myappとかつくって、PSGI-appをdaemontoolsで常駐させたい場合。

$HOME/.bashrcに1個exportを追記する

以下の行を追記しておく。
export PATH=$HOME/bin:$PATH
書いたら、一旦ログインし直す。

$HOME/以下に必要なディレクトリを用意する

~$ mkdir -p ~/service ~/bin ~/myapp/log

ユーザ用のsvscanbootを作る


$HOME/bin/svscanboot

#!/bin/sh

svscan $HOME/service 2>&1 | \
  readproctitle $HOME/service errors: ................................................................................................................................................................................................................................................................................................................................................................................................................ 

runファイルを作る


$HOME/service/myapp/run

#!/bin/sh
exec 2>&1
start_server --port=6000 -- plackup -L Shotgun -s Starlet ~/psgi/myapp/myapp.psgi

$HOME/service/myapp/log/run

#!/bin/sh
exec 2>&1
exec multilog t ~/myapp/log

サービスをdaemontoolsに登録する

~$ mv ~/myapp ~/service/ -v

svscanbootを起動する

~$ svscanboot &
[1] 13787
プロセス番号(ここでは13787)を控えておき、これをdisownする。
~$ disown 13787

ps axfhでプロセスを見ると、大体こんな感じになってると思います。

~$ ps axfh
  :
  :
 省略
  :
  :
13787 ?        S      0:00 /bin/sh /home/ytnobody/bin/svscanboot
13788 ?        S      0:00  \_ svscan /home/ytnobody/service
17896 ?        S      0:00  |   \_ supervise api
19351 ?        S      0:00  |   |   \_ /bin/sh ./run
19352 ?        S      0:00  |   |       \_ /home/ytnobody/perl5/perlbrew/perls/perl-5.12.3/bin/perl /home/ytnobody/perl5/perlbrew/perls/current/bin/start_server --port=6000 -- plackup -L Shotgun -s Starl
19353 ?        S      0:00  |   |           \_ /home/ytnobody/perl5/perlbrew/perls/perl-5.12.3/bin/perl /home/ytnobody/perl5/perlbrew/perls/current/bin/plackup -L Shotgun -s Starlet /home/ytnobody/myapp
19354 ?        S      0:00  |   |               \_ /home/ytnobody/perl5/perlbrew/perls/perl-5.12.3/bin/perl /home/ytnobody/perl5/perlbrew/perls/current/bin/plackup -L Shotgun -s Starlet /home/ytnobody/my
19355 ?        S      0:00  |   |               \_ /home/ytnobody/perl5/perlbrew/perls/perl-5.12.3/bin/perl /home/ytnobody/perl5/perlbrew/perls/current/bin/plackup -L Shotgun -s Starlet /home/ytnobody/my
19356 ?        S      0:00  |   |               \_ /home/ytnobody/perl5/perlbrew/perls/perl-5.12.3/bin/perl /home/ytnobody/perl5/perlbrew/perls/current/bin/plackup -L Shotgun -s Starlet /home/ytnobody/my
19357 ?        S      0:00  |   |               \_ /home/ytnobody/perl5/perlbrew/perls/perl-5.12.3/bin/perl /home/ytnobody/perl5/perlbrew/perls/current/bin/plackup -L Shotgun -s Starlet /home/ytnobody/my
19358 ?        S      0:00  |   |               \_ /home/ytnobody/perl5/perlbrew/perls/perl-5.12.3/bin/perl /home/ytnobody/perl5/perlbrew/perls/current/bin/plackup -L Shotgun -s Starlet /home/ytnobody/my
19359 ?        S      0:00  |   |               \_ /home/ytnobody/perl5/perlbrew/perls/perl-5.12.3/bin/perl /home/ytnobody/perl5/perlbrew/perls/current/bin/plackup -L Shotgun -s Starlet /home/ytnobody/my
19360 ?        S      0:00  |   |               \_ /home/ytnobody/perl5/perlbrew/perls/perl-5.12.3/bin/perl /home/ytnobody/perl5/perlbrew/perls/current/bin/plackup -L Shotgun -s Starlet /home/ytnobody/my
19361 ?        S      0:00  |   |               \_ /home/ytnobody/perl5/perlbrew/perls/perl-5.12.3/bin/perl /home/ytnobody/perl5/perlbrew/perls/current/bin/plackup -L Shotgun -s Starlet /home/ytnobody/my
19362 ?        S      0:00  |   |               \_ /home/ytnobody/perl5/perlbrew/perls/perl-5.12.3/bin/perl /home/ytnobody/perl5/perlbrew/perls/current/bin/plackup -L Shotgun -s Starlet /home/ytnobody/my
19363 ?        S      0:00  |   |               \_ /home/ytnobody/perl5/perlbrew/perls/perl-5.12.3/bin/perl /home/ytnobody/perl5/perlbrew/perls/current/bin/plackup -L Shotgun -s Starlet /home/ytnobody/my
17897 ?        S      0:00  |   \_ supervise log
17900 ?        S      0:00  |       \_ multilog t /home/ytnobody/myapp/log
/home/ytnobody/src/mongodb/data/db --nohttpinterface
  :
  :
 省略
  :
  :