Helper::Lighttpd #4

MIME::Types が入ってたらそっからがーって mimetype.assign をはくようにした。

てけとう。

でも、mime-typeが指定されてなくて困るのは、FirefoxでCSSが適用されないってぐらいな気がするというかそんな感じなのでとりあえずこれで。

by typester / at 2006-09-09T16:19:00 / perl · catalyst · lighttpd / Comment

Helper::Lighttpd #3

-dオプションもつけた。-Debug してなくてもデバッグ出力できるやつ。まぁserver.plと同じ。

$ ./script/myapp_lighttpd.pl -l /usr/sbin/lighttpd -d
2006-09-09 15:45:39: (log.c.75) server started
[debug] Debug messages enabled
[debug] Loaded plugins:
.----------------------------------------------------------------------------.
| Catalyst::Plugin::ConfigLoader  0.13                                       |
| Catalyst::Plugin::Static::Simple  0.14                                     |
'----------------------------------------------------------------------------'

[debug] Loaded dispatcher "Catalyst::Dispatcher"
[debug] Loaded engine "Catalyst::Engine::FastCGI"
[debug] Found home "/home/typester/tmp/MyApp"
[debug] Loaded Config "/home/typester/tmp/MyApp/myapp.yml"
[debug] Loaded components:
.-----------------------------------------------------------------+----------.
| Class                                                           | Type     |
+-----------------------------------------------------------------+----------+
| MyApp::Controller::Root                                         | instance |
'-----------------------------------------------------------------+----------'

[debug] Loaded Private actions:
.----------------------+--------------------------------------+--------------.
| Private              | Class                                | Method       |
+----------------------+--------------------------------------+--------------+
| /default             | MyApp::Controller::Root              | default      |
| /end                 | MyApp::Controller::Root              | end          |
'----------------------+--------------------------------------+--------------'

[info] MyApp powered by Catalyst 5.7001

Yes! YEs!

あとは静的ファイルの mime-types をちゃんとサポートすれば、server.plいらない気がする。

perl -d するとき以外は。

by typester / at 2006-09-09T15:49:00 / perl · catalyst · lighttpd / Comment

Helper::Lighttpd #2

昨日のやつ、

Fixes Engine::CGI for Lighttpd - typester's vox

このパッチ当てないとうまく動かんよ、って書くの忘れてた。

あと、myapp_lighttpd.pl に -p オプションつけるとlighttpdの設定を標準出力に出すようにしてみた。

これで、lighttpd.confで

include_shell "/path/to/myapp_lighttpd.pl -p -approot /myapp/"

とか書くだけで設定完了みたいな。

まだオプション足りなくて設定きめうちで微妙だけど、なんかいいアイデアな気がする。

by typester / at 2006-09-09T11:39:00 / perl · catalyst / Comment

Catalyst::Helper::Lighttpd

とか作った。

http://svn.unknownplace.org/public/library/perl/trunk/Catalyst-Helper-Lighttpd/

これいれると、

./script/myapp_create.pl Lighttpd

でscriptディレクトリにmyapp_lighttpd.plができる。これがlighty使ったテストサーバー。

lighttpdにPath通ってれば

./script/myapp_lighttpd.pl

叩くだけでOK。デフォポートは3000。他オプションは-hで。

by typester / at 2006-09-08T18:34:00 / perl · catalyst / Comment

FastCGIでテストサーバーしたい!

$ CATALYST_DEBUG=1 ./script/myapp_fastcgi.pl -l :3001 [debug] Debug messages enabled [debug] Loaded plugins: .----------------------------------------------------------------------------. | Catalyst::Plugin::ConfigLoader 0.13 | | Catalyst::Plugin::Static::Simple 0.14 | '----------------------------------------------------------------------------'

[debug] Loaded dispatcher "Catalyst::Dispatcher"
[debug] Loaded engine "Catalyst::Engine::FastCGI"
[debug] Found home "/home/typester/tmp/MyApp"
[debug] Loaded Config "/home/typester/tmp/MyApp/myapp.yml"
[debug] Loaded components:
.-----------------------------------------------------------------+----------.
| Class                                                           | Type     |
+-----------------------------------------------------------------+----------+
| MyApp::Controller::Root                                         | instance |
'-----------------------------------------------------------------+----------'

[debug] Loaded Private actions:
.----------------------+--------------------------------------+--------------.
| Private              | Class                                | Method       |
+----------------------+--------------------------------------+--------------+
| /default             | MyApp::Controller::Root              | default      |
| /end                 | MyApp::Controller::Root              | end          |
'----------------------+--------------------------------------+--------------'

[info] MyApp powered by Catalyst 5.7001
FastCGI: manager (pid 3003): initialized
FastCGI: server (pid 3004): initialized
FastCGI: manager (pid 3003): server (pid 3004) started

こんな感じで、CatalystのFastCGIプロセスをDebugモードでかつデーモンじゃなく起動して、組み込みのテストサーバー代わりにしたいのだけど、上記以降の出力は全部lighttpdのログのほうに吐き出されてしまうのでびみょい。

なんとかなんないかなぁと、田中さんに相談中。

by typester / at 2006-09-08T13:08:00 / perl · catalyst / Comment

Chained

Chainedアクションを使って、/ユーザー名/... だとそのユーザーのエントリを表示。

/... だと全員のエントリを表示するアプリケーションの例。

最後にはてなっぽく /ユーザー名/profile もつけてある。

package MyApp::Controller::UserView;

use strict;
use warnings;
use base 'Catalyst::Controller';

sub user_detect :Chained('/') :PathPart('') :CaptureArgs(1) {
    my ($self, $c, $user) = @_;
    $c->stash->{user} = $c->model('DBIC::User')->find({ username => $user })
        or $c->detach('/default');
}

sub user_root :Chained('user_detect') :PathPart('') :Args(0) {
    my ($self, $c) = @_;
    $c->forward('/view/index');
}

sub user_tag :Chained('user_detect') :PathPart('tag') :Args(1) {
    my ($self, $c, $tags) = @_;
    $c->forward('/view/tag');
}

sub user_year :Chained('user_detect') :PathPart('') :Args(1) {
    my ($self, $c, $year) = @_;
    $c->forward('/view/year');
}

sub user_month :Chained('user_detect') :PathPart('') :Args(2) {
    my ($self, $c, $year, $month) = @_;
    $c->forward('/view/month');
}

sub user_day :Chained('user_detect') :PathPart('') :Args(3) {
    my ($self, $c, $year, $month, $day) = @_;
    $c->forward('/view/day');
}

sub user_permalink :Chained('user_detect') :PathPart('') :Args(4) {
    my ($self, $c, $year, $month, $day, $id) = @_;
    $c->forward('/view/permalink');
}

sub user_profile :Chained('user_detect') :PathPart('profile') :Args(0) {
    my ($self, $c) = @_;

    $c->stash->{template} = 'user/profile.tt';
}

1;

うーん、微妙w

:Chained('/') :PathPart('')

はあんまりやらないほうがよさげ。

by typester / at 2006-09-02T22:13:00 / perl · catalyst / Comment

Chainedアクションを覚えた

便利ねー。これで Plugin::Flavour の半分はいらなくなったから削ってシンプルにしようかと思う。

CaptureArgsやArgsをRegexで指定できたらもっとあついなぁ。

引数の数は同じだけど振り分けられる的な。

by typester / at 2006-09-02T16:29:00 / perl · catalyst / Comment

SubRequest #2

今のCatalystだとうまく動かんね。localまくってるところに

local $c->{action};
local $c->{namespace};

追加いりそう。あんまり見てないんですが。

by typester / at 2006-07-24T16:46:00 / catalyst / Comment

Catalyst::Plugin::SubRequest

初めてソース見たけど、いいじゃんこれ。

なぜか名前から連想で内部でLWP::UserAgentとかもってて普通にHTTPアクセスしてるとか勝手に思い込んでたけど、そうじゃなかった。

食わず嫌いはよくないなぁ。

自分自身が提供してるAPIを使う場合とかかなり便利そう。

my $json = $c->subreq('/json/blahapi');
by typester / at 2006-07-24T12:43:00 / perl · catalyst / Comment

Simple tip for text parsers with Catalyst

for my $parser (qw/Markdown Textile Trac Hatena/) {
    __PACKAGE__->plugin( lc $parser, "Text::$parser" );
}
__PACKAGE__->textile->charset('utf-8');

とかで一括セットアップ。

$c->trac->parse($text) とか使える。

by typester / at 2006-07-22T03:50:00 / perl · catalyst / Comment

1 2 3 4 5 6 7 8 9 10

(Page 4 of 11)