2010/09/20

Rails3.0 でログファイルのパスを取得する

environment.rb などでログファイルのパスを取得したい場合ってあるよね。
開発環境でのログのローテーション設定とかね。
Rails 2.x ではログファイルのパスは config.log_path で取得できた。
Rails 3.0 では deprecated になったようで、paths.log を使えと警告される。
ところが、単純に paths.log ではパスは取得できない。
paths.log の実体は Rails::Paths::Path というクラスのオブジェクトなので、直接パスの文字列は取得できない。
to_s しても無駄。
で、どうすりゃいいのかと API 見ていると path という属性がある。
これだーと思って、paths.log.path としても nil が返ってくるばかり。
何でだーと思って、p paths.log とかしてみると、paths 属性にパス文字列の配列を持っているようだ。
というわけで、ログファイルのパスを取得するには paths.log.paths[0] としなければならないようだ。
読み取り専用の path 属性とかあれば、普通そっちだと思わないかい?

0 件のコメント :

コメントを投稿