Catalyst

Catalyst::Runtimeのバージョンチェックをしているようでしていない件

Catalyst::Helperが出力するMyApp.pmに、 use Catalyst::Runtime '5.70'; ってあるじゃないですか。 あまりHelper使わないから気付かなかったけど、良く見たら文字列になってるんですよね。ってことは、Catalyst::Runtimeバージョン5.70以上を要求してるわけ…

CX::P::E::FastCGI::LighttpdをCPANに上げた

もう1年以上前からになりますが、 lighttpdでファイルが存在しない場合にFastCGI-Catalystへ飛ばす設定とプラグイン - ヒルズで働く@robarioの技ログ このようなプラグインを使っていました。この度(主に自分都合により)このプラグインをCPANに0.0.1として…

Catalystのバージョンを上げたら文句言われた。

Catalystのバージョンを5.71にしたらこんなメッセージが出るようになりました。 [warn] Used regexp fallback for $c->model('View::TT'), which found 'MyApp::Web::View::TT=HASH(0x21d44d0)'. Relying on regexp fallback behavior for component resolut…

Template-ToolkitのWRAPPERを一時的に解除する

{ local $c->view->template->service->{WRAPPER} = []; $c->forward( $c->view ); }

Re: EmacsでPerl開発する上で必須な設定 #2 - flymake - antipop

EmacsでPerl開発する上で必須な設定 #2 - flymake - Kentaro Kuribayashi's blog Catalystで、C::E::HTTP::Restarterを使ってると、flymakeが作ったFoo_flymake.pmを検出して勝手に再起動しまくるので超困る。 C::E::HTTP::RestarterがFoo_flymake.pmを認識…

久しぶりにCatalyst小ネタでも書いてみるか。

リクエストの取り扱いは現在、「静的ファイルがあったらそれを返し、無かったらバックエンドのCatalystに飛ばす」って感じで落ち着いています。 Apacheならmod_rewrite、lighttpdならserver.error-handler-404とかで。 CatalystTestServerではC::P::Static::…

Lighttpd + mod_proxy で Catalystに飛ばす時

何も考えずに $HTTP["host"] == "backend.example.com" { proxy.server = ( "" => (("host" => "127.0.0.1", "port" => 3000))) } などとしてしまうと、$c->uri_forが http://backend.example.com:3000/ になってしまって都合が悪い。、大抵バックエンドには…

Catalyst::Devel-1.05が出てた。

Catalyst::Devel-1.05が出てた。catalyst.plで作られるRoot.pmの中身が変わっていた。 PrivateアクションがPathアクションに変更 またはまった。default アクションでの args の扱い - ヒルズで働く@robarioの技ログ defaultアクションの属性はPathが良いで…

lighttpdでファイルが存在しない場合にFastCGI-Catalystへ飛ばす設定とプラグイン

「そんなことしなくてもいいよ」的な猛烈な勘違いをしてたらすみませんがこっそり教えてください。Apacheの RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^/(.*)$ http://127.0.0.1:3000/$1 [L,QSA]みたいなイメージで、 ファイルが存…

Re: JSON::XS を実戦投入した

unknownplace.org - 2008/02/05 - JSON::XS を実戦投入したCatalyst::View::JSON-0.23(2008/02/22)からencode_jsonが使えるようになってるっぽ。 package MyApp::View::JSON; use strict; use base 'Catalyst::View::JSON'; use JSON::XS (); my $encoder = …

完済人

Catalystを語る人 ・・・く、くるしー!っていうか別に駄洒落にもなってない!語感が似てるなーって思っただけ(><) くだらないと分かりつつも思い付いた事を言わずにいられないのは関西人の性です。あっ!そこのあなた!スターとか付けなくていいですか…

Catalyst::View::TT::ForceUTF8使ってるけどFilterで文字化け

(急いで書いてるので間違ってたらごめん。)Catalyst::View::TT::ForceUTF8を使って、テンプレート内でTemplate::Plugin::Clickableとか使うと Malformed UTF-8 character (fatal)とか言って落ちる。 #--- MyApp/View/TT.pm ---# package MyApp::View::TT; …

Catalyst::View::TT::ForceUTF8に設定を握りつぶされる

あー。PadWalkerってそういうモジュールだったのか。 http://nyarla.net/blog/perl-tips4 これ使ったら@Catalyst::View::TT::ForceUTF8::PROVIDER_CONFIG_KEYSを書き換えられるじゃん。 色々終わったらPadWalker使って書き直そう。 package MyApp::View::TT;…

Re: Catalyst でテンプレートファイルがあったら表示するの術

(タイトル考えるのって面倒) my $template = $c->req->path . '.tts'; my $template = $c->action . '.tts'; の方がいいかも。アクションがindexとかdefaultの時のテンプレート名がおかしくなっちゃうので。(あと、Regex使ってる時とかマッチする奴全部を…

Catalyst::Plugin::*でClass::C3は使わない(Catalyst-v5.7010)

Catalystの変更予定(?) - ヒルズで働く@robarioの技ログ NEXTよりClass::C3のほうが正しいMROになるのはわかるんだが - masaki@catalyst - Catalystグループあー、うん。確かにC::P::*でClass::C3使ってると、プラグインの組み合わせによってはエラーで起…

Root.pm(゚д゚)イラネ

lib/MyApp/Controller/Root.pmってあるじゃないですか。namespaceが空の奴。 そいつのせいで自分のRoot.pmが作れないじゃないですか。http://localhost:3000/root/みたいな。 Root2.pm作ってnamespaceいじればできるけど。そんなのやりたくないじゃないです…

Catalystの変更予定(?)

しばらくぶりにCatalystを触っていたら、なにやらちょこちょこ変更されつつあるようなので、自作プラグインもちょこちょこ書き換えました。 configに使うキーにモジュール名を使う Catalyst::Plugin::ConfigLoader - Load config files of various types - m…

indexアクションへのtrailing slash

筆者は、なるべくデザインをローカル(つまりfileプロトコル)で確認できるように、外部JS/CSS/画像へのパスは絶対パスではなく相対パスで書くようにしています。また、少し話はズレますが、あるアクション固有の静的リソースの配置を /action/ /images/acti…

defaultアクションの取り扱い

Devel::Bayside - デフォルトアクションの取り扱い自分はdefaultアクションをRoot.pmだけに書いて、404 Not Foundを返すようにしています。 package MyApp::Controller::Root; sub default : Path { my ( $self, $c ) = @_; $c->res->status(RC_NOT_FOUND); …

defaultアクションの属性はPathが良いです

default : Privateだと、引数($c->req->args)にnamespaceが含まれてしまって面倒な感じになるので、default : Pathにしておくが吉です。 またはまった。default アクションでの args の扱い - ヒルズで働く@robarioの技ログ を参照のこと。

Catalystアプリケーションの設定ファイルにアプリケーション絡みのパスを書く場合は__path_to(...)__を使う

次、SQLLiteのpath をフルパスにしないといけないっぽい件。path_toメソッド使って気分すっきりしました。 connect_info => [ 'dbi:SQLite:' . YourApp->path_to('db/your_db.db'), ], これ見て思い出したんですが、この設定をmyapp.ymlに書く場合は connect…

これでCatalystのディレクトリ構成での悩みが減るかも

[開発] Catalystベースのアプリケーションのlib構成 - D-5 出張版ああああぁぁぁぁ。これヽ(゚д゚)ノ ええじゃないか 近いうちに時間ができたらリポジトリ再編成しよっと。 って思ったけど、lib/MyAppじゃなくてlib/直下にlib/MyApp/Webじゃなくてlib/MyApp直…

CatalystでDBIx::Class::Schema::Loader

http://blog.mizzy.org/articles/2007/05/06/dbix-class-schema-loader unknownplace.org - 2007/05/07 - Schema::Loader 使い方 更に、自分の場合は myapp.yml に C::M::DBIC::Schema の設定が書いてあるので use DBIx::Class::Schema::Loader qw(make_sche…

Catalyst::Plugin::*の読み込み方(小ネタ)

普通に作るとプラグインの読み込み方は以下のようになります。 package MyApp; use Catalyst qw/-Debug ConfigLoader Static::Simple/; __PACKAGE__->setup; でもこれだと条件によって読み込むプラグインを変えたい時は、その条件分岐をBEGINに突っ込んだり…

LighttpdとFastCGIで、静的・動的ファイルを俺的に振り分ける

あまり「static/以下は静的」みたいな振り分け方は好きではなくて、「拡張子が有ったら静的・無かったら動的」として振り分けるようにしています。Lighttpd + FastCGIだとこんな感じで「拡張子を含まないリクエストをfastcgiで処理する」という条件でできま…

Lighttpd + Catalyst + FastCGIが動かない

だけど、もー、どうにもこうにも動かないのである。 404エラーじゃ無くて、真っ白になってしまう。自分の Cygwin + lighttpd@cygpackage + fcgi@cygpackage な環境では、fastcgi.serverの設定が"host" => "localhost"だと同じく真っ白になる症状で、"host" =…

DBIx::Class + Catalyst::View::JSON(2)

以前書いたエントリの修正です。get_columnsだとinflateを通らないようなので、明示的にアクセサを呼ぶように修正しました。使い方には変更ありません。 sub inflate_row { my $row = shift; my %data; foreach my $column ( $row->result_source->columns )…

ある環境下のCatalystでDBIx::Class::Schema::Loaderが落ちるのを修正

久々にCatalystアプリをApache2/worker+ModPerl2な環境で動かしてみたところ、 DBIx::Class::ResultSet::find(): no sth generated via sql (DBD::mysql::db STORE failed: handle 2 is owned by thread 926fb18 not current thread 9bf0448 (handles can't …

テンプレートファイル名を$c->stash->{template}に入れる必要は無い

久しぶりにCatalystのマニュアル見てたら sub foo : Global { # called for /foo, /foo/1, /foo/1/2, etc. my ( $self, $c, @args ) = @_; # args are qw/1 2/ for /foo/1/2 $c->stash->{template} = 'foo.tt'; # set the template みたいな記述があって、「…

DBIx::Class + Catalyst::View::JSON

InflateColumnを使っているときに問題があったため、修正版を新しいエントリに起こしました。 修正版:DBIx::Class + Catalyst::View::JSON(2) - ヒルズで働く@robarioの技ログ 昔書いたメモが出てきたので転載。DBIC::ResultSet#findやDBIC::ResultSet#…