FC2ブログ
2010
12.03

[Catalyst] __PACKAGE__->path_to の値

Category: perl
__PACKAGE__->path_to は __PACKAGE__->config->{'home'} を返します。

基本的には自動で入るので、設定する必要はなくて、
yaml に書いても、yaml 読み込む前に色々使われちゃうので、そっちに書いても意味ないです(←書いてみたらしい)。


たとえば、似たようなプロジェクト使ってて、 lib 以下とか symlink 使いまくりでいいよね
とかしてると、

たとえば、テンプレートのディレクトリを __PACKAGE__->path_to('root','templates') みたいにしてると

myApp/script/../lib/MyApp/../../root/templates



って返ってきて、これって、myApp/script/root/templates じゃないんですよね。 symlink してる方を見に行っちゃう。

ってのに気づかなくて、 ls -i filename とかして調べたら、inode 違うからおかしいな→ symlink か!
と気づきました。

これは困るので、 MyApp.pm の __PACKAGE__ のいっちゃんはじめで

__PACKAGE__->config->{'home'} = 'フルパス'



したらうまく行きました。

Catalyst.pm の sub path_to をほげほげしまくってやっと捕まえた・・・。

つーか、そんな運用するのが間違ってて、Catalyst の問題じゃないよーな気がしますが、
うーんでも、 __PACKAGE__->config->{'home'} は .. を含まない形で返してほしーな。

__PACKAGE__->path_to('root'); すると、

/hogehoge/script/../lib/MyApp



って返ってきます。

まぁでも一応解決できたのでメモ。




スポンサーサイト




トラックバックURL
http://noriko3.blog42.fc2.com/tb.php/479-0a35daaf
トラックバック
コメント
管理者にだけ表示を許可する
 
back-to-top