FuelPHP のエラー通知をメールで受け取るアイディア

2012/06/28

【2012/7/6 追記】
このアイディアは、アクセスが非常に多いサービスなどではメール通知が爆発する危険性があり、最適な方法とは言えないと気づきました。
↓補足エントリーを書きましたのでこちらもあわせてご覧ください
WEB アプリケーションのエラーをメールで通知する時に気をつけること
【/追記終わり】

また、FuelPHP の話しですよー。

奈良の鹿

WEB アプリケーションを動かしていて、何かエラーが発生した時に、管理者にメールで通知する、ってよくある話だと思うんですが、FuelPHP だとどうするのかなー、って色々考えて、この方法どうかなというのを思いつきましたので晒します。

それは、

エラー画面の View ファイルにメール送信のコードを埋め込む

です。

まず、COREPATH/views/errors/ 以下のファイルを APPPATH/views/errors/ にコピーしてきます。FuelPHP の view ファイルはただの php なので、コピーしてきた各エラー用の view ファイルの末尾に、たとえば、APPPATH/views/errors/php_error.php なら

こんな風にメール送信スクリプトを書き加えると、エラーが発生するとメールが送信されてきます。

ちょっと工夫したのは、メールの body に View::forge() したものを渡しているところでしょうか。

ちなみに、メール本文の view ファイル error_mail.php はこんなかんじです。

すると、こんなメールが送られてきます。

error_mail

実は、もっとちゃんとした方法がありそうな気もするんですが、ちょっと見つけられなかった。みんないったいどうしてるんだろう??

もし、こんなのあるよー、というのがあればぜひ教えてください。

FuelPHP で日本の住所を扱うパッケージを作ったはなし

2012/06/26

P1100117.JPG

仕事で日本の住所を扱う機会が多いので、FuelPHP のパッケージの勉強も兼ねて、ひとつ試しに作ってみました。その名も「fuel-jpaddress」!名前超ダサい!

https://github.com/omoon/fuel-jpaddress

今のところできるのは、

  • 都道府県コードから都道府県名を取得
  • 郵便番号から住所を取得

の2つ。

今回は、郵便番号から住所を取得する部分に、以前 @msng さんに教えてもらっていつか試したいと思っていた Google CGI API for Japanese Input を使ってみました。詳しくはこの辺のソース参照のこと。

さて、このパッケージをあなたのアプリでも使いたい場合は、こんな感じになると思います。ここでは、FuelPHP らしく oil コマンドでインストールする方法を紹介します。

config にパッケージの git レポジトリを追加する

COREPATH/config/package.php

return array(
    'sources' => array(
        'github.com/fuel-packages',
    ),
);

これを、APPPATH/config/package.php に持ってきて、

return array(
    'sources' => array(
        'github.com/fuel-packages',
        'github.com/omoon',
    ),
);

とします。これで、oil コマンドで インストールできるようになります。

oil コマンドでインストール


$ oil package install jpaddress
Downloading package: git://github.com/omoon/fuel-jpaddress.git
remote: Counting objects: 30, done.
remote: Compressing objects: 100% (21/21), done.
remote: Total 30 (delta 8), reused 23 (delta 3)
Receiving objects: 100% (30/30), 4.61 KiB, done.
Resolving deltas: 100% (8/8), done.

Cloning into /Users/omoon/Documents/foo/fuel/packages/jpaddress...

こんな感じで先ほど追加したレポジトリからインストールされます。

なお、oil コマンドは、リポジトリの中からパッケージ名が「fuel-hogehoge」となっているものを探しに行くようなので、パッケージを作る時は、「fuel-hogehoge」とする必要があるようです。そうすると、パッケージ名が「hogehoge」と認識され、$ oil package install hogehoge でインストールできる、ということみたいです。

config.php を編集

で、jpadress を APPPATH/config/config.php の always_load の部分に追加します。config も使ってるのでそっちも。

return array(
    'always_load' => array(

        'packages' => array(
            'parser',
            'jpaddress', // 追加
        ),

        'config' => array(
            'session',
            'jpaddress', // 追加
        ),
    )
);

これで、

Jpaddress\Ken::getName(27);         // 大阪府
Jpaddress\Ken::getShortName(27);    // 大阪
Jpaddress\Jusho::getJushoByZip('531-0071'));    // 大阪府大阪市北区中津
Jpaddress\Jusho::getJushoByZip('5310071'));     // 大阪府大阪市北区中津

こんな風に使えるようになるはずです。

では、また。

FuelPHP、Pagoda Box、あのロボットたちの名前を聞いてみました

2012/06/14

FuelPHPの”KILL ALL HUMANS!”のロボットには名前があるのか』を朝電車の中で読んでいたら、もう気になって気になって仕事が手につかないので、直接聞いてみました。

まずは、FuelPHP のロボット。こいつのことです。
6819d53b01c729a8d3b59668967a65f9

ここは twitter で。いきなりこんな風に聞いたった。

ということで、最終回答は @dallard さんの返答待ちですが、今のところ「Tim the Tin robot」っていうのが有力みたいですね。「ブリキのちむ」(ティムではなく敢えて「ちむ」を推したい)ってところでしょうか。

【追記】正式回答来ました!「ブリキのちむ」でファイナルアンサーです!


【/追記】

続いて、Pagoda Box のこのロボット2体。
d9566b7d6f0ff11ddb8a15fac3c84c71

Pagoda Box が何なのかということについては機会があれば色々と書きたいのですが、簡単に言うと、PHP が使える PaaS! しかも無料から! ってところでしょうか。実はこのブログも Pagoda Box でタダで動かしてます。

で、Pagoda Box はサイト上にライブチャットがあるんですね。早速聞いてみました。

4a99c265e300ba474dd6f5b4714029a6

左のあいつは「Hal」。右のやつには名前がないと。で、オススメない?って聞かれたので、僕の名前「omoon」使ってもいいよ、っていうときました。

では、最後に復習です。テストに出ますから、みなさんしっかり覚えましょう。

『ブリキのちむ』
6819d53b01c729a8d3b59668967a65f9

『左:はる、右:名前はまだない(暫定:omoon)』
d9566b7d6f0ff11ddb8a15fac3c84c71

あー、すっきりした。

おまけ)
Pagoda Box とのチャットログです。ひどい英語です。英語へのツッコミも大歓迎です。

→my name is omoon, and my address is sotaro@omoon.org
→can i ask you a question?
Hal: hi!
Hal: sure!
→I can see two robots at this page https://pagodabox.com/
Hal: i want to help any way that I can
→does they have names?
→do they have names?
→sorry about my poor english;-(
Hal: one is hal, but we don’t have a name for the other
Hal: your english is fine
→which is hal?
→left one?
→ ???
→r u hal?
→!
Hal: i’m not hal
Hal: 😀
→oh, ;-D
Hal: the left one is hl
→left one is hal, right?
Hal: hal
→oh, i c
→and the right one has no name, right?
Hal: that is correct
Hal: do you have any recommendations?
→yes, you can use my name ‘omoon’!
→;-)
Hal: 😛
→anyway, you all should have to have a meeting to named he/her.
→ok, thank you.
Hal: someday I’m sure we’ll decide
Hal: 😀
Hal: you are the first person to ask
→I will blog about his name.
→thank you!
→take care!

<< 古い記事