Path::Tiny を使っている時にディレクトリを自動的に作る

Path::Tiny 祭り

Path::Tiny を使い始めてから、以前 Path::Class を使って書いていたものを書き直したい衝動といつも戦っています。

touchpath というのを知った

つい最近まで知らなかったのですが、ファイルを作る時にディレクトリがない場合に自動的に作成するメソッドがありました。 というか、これまでは当たり前のようにディレクトリを作成してからファイルを作成していたのですが。

1
2
3
my $path = path('var/foo/bar.txt');
$path->parent->mkpath;
$path->touch;

実は以下のようにできるのです。

1
2
my $path = path('var/foo/bar.txt');
$path->touchpath;

とっても便利。

プログラムが作るファイルの置き場所

さて、プログラムが作るファイルはなるべく同じところに集めておきたいので、プロジェクトルートに var というディレクトリを作っておいてその中で各種ファイルを作成するようにしています。

予め var というディレクトリを作っておいて、 .gitkeep などのファイルを作成してリポジトリに登録しておきます。 かつ、そのディレクトリの中は git では管理しないように .gitignore に除外ディレクトリとして追加しておくのが定番です。

実際にプログラムを作成し始めて var/foo/bar.txt というようなファイルを作成しようとすると、 foo ディレクトリがない場合に例外になってしまいます。

わかっていてもうっかりやってしまうので、 touchpath だとこういうときには便利ですね。

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy