【Ruby】トップレベル?Fileクラスを指定するにはどうすれば良いのでしょうか?


require 'rubygems'
require 'mechanize'
class MyMech < Mechanize
DIR = File.dirname(__FILE__)
end
#=> NoMethodError: undefined method `dirname' for Mechanize::File:Class

Mechanize::File.dirname() ではなく
こちら
http://www.ruby-lang.org/ja/man/html/File.html
のクラスの File.dirname() を使うにはどうすれば良いのでしょうか?



回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/04/19 15:04:13
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:nuna No.2

回答回数32ベストアンサー獲得回数11

ポイント100pt

トップレベルの定数を参照するには :: を前につけてください。

class MyMech < Mechanize

DIR = ::File.dirname(__FILE__)

end

です。

あるいは、Mechanize の中を触る必要がなければ、

単にMyMechのインスタンス変数としてWWW::Mechanizeを持ったり委譲したりでもいいかと思います。

id:nannde

ご回答ありがとうございます!!

どんぴしゃ解決でございます m(_ _)m

優れたアドバイスもありがとうございます!!

Mechanize の中を触る必要はないのですが、

カンタンに委譲する方法を知らないので継承しようとしてます(--;;

class MyMech < Mechanize

def get(o, p, nanika)

@mech.get(o, p, nanika)

end

def post(...

2010/04/19 15:03:26

その他の回答1件)

id:koriki-kozou No.1

回答回数480ベストアンサー獲得回数79

ポイント10pt

http://www.ruby-lang.org/ja/man/html/File.html

>p File.dirname("dir/file.ext") # => "dir"

>p File.dirname("file.ext") # => "."


super は希望通りに動かない

mechanize でオーバーライドする前に alias しておくという手は試してない

warnig: toplevel constant File referenced by IP:File は出るけど一応使えそう

p IO::File.dirname("dir/file.ext")

p IO::File.dirname("file.ext")

id:nannde

ご回答ありがとうございます!!

::File

だったようです。

最速のご回答ありがとうございます m(_ _)m

2010/04/19 14:51:08
id:nuna No.2

回答回数32ベストアンサー獲得回数11ここでベストアンサー

ポイント100pt

トップレベルの定数を参照するには :: を前につけてください。

class MyMech < Mechanize

DIR = ::File.dirname(__FILE__)

end

です。

あるいは、Mechanize の中を触る必要がなければ、

単にMyMechのインスタンス変数としてWWW::Mechanizeを持ったり委譲したりでもいいかと思います。

id:nannde

ご回答ありがとうございます!!

どんぴしゃ解決でございます m(_ _)m

優れたアドバイスもありがとうございます!!

Mechanize の中を触る必要はないのですが、

カンタンに委譲する方法を知らないので継承しようとしてます(--;;

class MyMech < Mechanize

def get(o, p, nanika)

@mech.get(o, p, nanika)

end

def post(...

2010/04/19 15:03:26

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません