RubyMineには次の2つのクラスがあります。
book.rb
_ class Book
def initialize(name,author)
end
end
_
test.rb
_require 'book'
class teste
harry_potter = Book.new("Harry Potter", "JK")
end
_
Test.rbを実行すると、次のエラーが表示されます:C:/Users/DESKTOP/RubymineProjects/learning/test.rb:3:in <class:Test>': uninitialized constant Test::Book (NameError) from C:/Users/DESKTOP/RubymineProjects/learning/test.rb:1:in
'from -e:1:in _load' from -e:1:in
_ 」
初期化メソッドを定義しましたが、インスタンス変数に値を割り当てるのを忘れており、コードのタイプミスがエラーを引き起こし、次のように修正しました:
book.rb
class Book
def initialize(name,author)
@name = name
@author = author
end
end
test.rb
require './book'
class Test
harry_potter = Book.new("Harry Potter", "JK")
end
つまり、どの本またはリソースをフォローしていますか?Rubyとオブジェクト指向プログラミングの適切な知識を得るためには、少なくとも本を完了する必要があります。私はあなたに「本Ruby 'から始めます。
require 'book'
行がBook
クラスを定義していない別の場所から他のbook.rb
を必要としているため、エラーが発生しています。
Rubyはrequire
を検索するディレクトリのリストに現在のディレクトリを自動的に含めないため、現在のディレクトリにファイルを必要とする場合は、./
を明示的に付加する必要があります。
require './book'
Railsアプリでは、このエラーは、ファイルの名前を変更せずにクラスの名前を変更した場合にも発生する可能性があります。これは、このエラーを見つけたときの問題でした:
book.rb
class Book
def initialize(name, author)
end
end
book_test.rb
class BookTest
harry_potter = Book.new("Harry Potter", "JK")
end