インスタンスメソッドからsingletonメソッドへのアクセスが、思ったようにできません。
はじめは、次のように記述すれば動作すると思っていました。
(MyClass.get_hello_wordをインスタンスメソッドから呼び出し)
class MyClass
def hello
puts self.get_hello_word # エラー発生源
end
def self.get_hello_word
'hello every one'
end
end
MyClass.new.hello # エラー
しかし、実際には次のように記述しなければ動きませんでした。
class MyClass
def hello
puts self.class.get_hello_word # self.classのワンクッション
end
def self.get_hello_word
'hello every one'
end
end
MyClass.new.hello
そもそも、
def self.get_hello_word
と定義したんだから、参照する時も同様にできてもいいのではないかと思うんですけれど、何か認識が間違っているのでしょうか。
だとしたら、(勘で言いますと)
class << MyClass
def get_hello_word
'hello every one'
end
end
の文法の考え方がからんでいるような気がするのですが・・
ちんぷんかんぷんです。
どうかこの辺りの知識を教えて頂けないでしょうか。
あと、self.class.get_hello_wordの記述方法よりも簡単な(そうすべき)書き方があれば教えて下さい。
インスタンスメソッドからsingletonメソッドへのアクセスが、思ったようにできません。
はじめは、次のように記述すれば動作すると思っていました。
(MyClass.get_hello_wordをインスタンスメソッドから呼び出し)
class MyClass
def hello
puts self.get_hello_word # エラー発生源
end
def self.get_hello_word
'hello every one'
end
end
MyClass.new.hello # エラー
しかし、実際には次のように記述しなければ動きませんでした。
class MyClass
def hello
puts self.class.get_hello_word # self.classのワンクッション
end
def self.get_hello_word
'hello every one'
end
end
MyClass.new.hello
そもそも、
def self.get_hello_word
と定義したんだから、参照する時も同様にできてもいいのではないかと思うんですけれど、何か認識が間違っているのでしょうか。
だとしたら、(勘で言いますと)
class << MyClass
def get_hello_word
'hello every one'
end
end
の文法の考え方がからんでいるような気がするのですが・・
ちんぷんかんぷんです。
どうかこの辺りの知識を教えて頂けないでしょうか。
あと、self.class.get_hello_wordの記述方法よりも簡単な(そうすべき)書き方があれば教えて下さい。
Ruby on Railsのmigration機能は便利ですが、この機能をRuby on Rails以外のプロジェクトのユニットテストのために使いたいと思っています。
というわけでRoRプロジェクトを作成しないで同等のmigration機能だけを使用できるようなツールみたいなものを探していますが、見つかりません。
(当方のrubyとRoRの無知さから情報にたどり着けないだけの可能性あり。。)
何かいいツール知ってる方いましたら教えて下さい。
(rubyで書かれていなくてもNPです。)
現在、時期プロジェクトでRuby on Railsを使ってシステム開発を行うためRuby on Railsを勉強中の者です。
railsはもちろんrubyも初心者です。
現在「RailsによるアジャイルWebアプリケーション開発」という本を読んで勉強していますが、他にも参考になる書籍やサイトなどがあれば教えて頂きたいです。
宜しくお願いします。