- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【ruby】特異クラスを使って,File.statをカスタムしたい)
【ruby】特異クラスを使って、File.statをカスタムしたい
このQ&Aのポイント
- 特異クラスを使用して、File.statにnameメソッドを追加したいです。実行結果は期待通りになりません。
- 実行結果はnilが出力され、期待した結果が得られませんでした。クラスメソッドstatの中に定義されているFile::Stat.new(file)を戻り値として使用しています。
- class File::Statのinitializeでは、@file = fileとなっているため、上記のようにコードを書きましたが、うまくいきませんでした。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
file.rbとかstat.rbとか、何のことかわからなかったですが、どうやらおそらく、rubygemsのwin32-file-statの話ですね。 require "win32/file" class File::Stat def name @file end end でいいと思います。やってみましたが、ファイル名はUTF-16で格納されていますね。
その他の回答 (1)
- notnot
- ベストアンサー率47% (4900/10358)
回答No.2
>つまりは組み込みのFile.stat)を改造するのって、どうしたら良いのですか? あまり綺麗には行きませんね。とりあえず下記で出来ます。 class File::Stat attr_accessor :name end class << File alias orig_stat stat def stat(f) w=orig_stat(f) w.name=f w end end
質問者
お礼
notnotさん、ご回答ありがとうございました。 >あまり綺麗には行きませんね たしかに強引な感じはしますが、 attr_accessorで出来ちゃうんですね!! すばらしい!! ありがとうございました。
お礼
notnotさん、ご回答ありがとうございました。 >file.rbとかstat.rbとか、何のことかわからなかったですが、どうやらおそらく、rubygemsのwin32-file-statの話ですね。 『stat』をrubyのディレクトリ配下で検索して出てきたファイルでして、 今一度確認しましたら、rubygemsのwin32-file-statでした。 File.statは、require "win32/file"すれば、stat.rbのFile::Statになるって事なんですよね。 また、質問になっちゃうのですが、require "win32/file"してない状態のFile.stat(つまりは組み込みのFile.stat)を改造するのって、どうしたら良いのですか? ご存知でしたら教えてください。お願いいたします。