次のように、クラス A から派生したクラス B があります。
class A
..
end
class B < A
...
end
別のファイルで、変数 M を定義しました
M = B
その後、エラーが発生しました
"NameError: uninitialized constant B".
私が書いた場合、私はちょうどそれを見つけました
M=A
M=B
それなら大丈夫です。何らかの方法で A を初期化する必要があるようです。
次のように、クラス A から派生したクラス B があります。
class A
..
end
class B < A
...
end
別のファイルで、変数 M を定義しました
M = B
その後、エラーが発生しました
"NameError: uninitialized constant B".
私が書いた場合、私はちょうどそれを見つけました
M=A
M=B
それなら大丈夫です。何らかの方法で A を初期化する必要があるようです。
ファイルはレールとは関係がないため、システム上の任意のフォルダーにある 2 つの別個のファイルであると想定できます。それらが同じディレクトリにあると仮定します。
class_def.rb:
class A
def self.talk
puts 'hello'
end
end
class B < A
def self.talk
super()
puts 'world'
end
end
ランナー.rb:
require './class_def.rb'
M=B
M.talk
ruby runner.rb を呼び出すと、出力が生成されるはずです
hello
world
ただし、RubyFiddle を使用して同じエラーに気付きました
メソッドへの呼び出し付きhttp://rubyfiddle.com/riddles/1d8e2
メソッドへの呼び出しなし http://rubyfiddle.com/riddles/1d8e2/