Eclipse IDE の代わりに Windows コマンドを使用しました。コードのエラーを見つけて最終的に修正するために使用した手順を示します。ここでは、DLTK プラグインに問題はありません。モジュール ファイルとテスト スクリプトは同じフォルダーにあります。
教訓 -モジュール内のモジュール名と定数名は大文字で始めなければなりません。なぜ、私は知りません。
aModule.rb
module aModule
aConstant = 7
end
Test.rb
require 'aModule'
puts aModule::aConstant
cmd: Test.rb フォルダーに cd し、ruby Test.rb
エラー: ``require': そのようなファイルを読み込めません -- tokenizer.rb (LoadError)`
help: Ruby 'require' エラー: そのようなファイルを読み込めません
Ruby 1.9 では現在のディレクトリがロード パスから削除されているため、Pascal が言うように、このファイルに対して相対要求を実行する必要があります。
require './tokenizer'
.rb を接尾辞として付ける必要はありません。Ruby は、とにかくそれが意味することを理解できるほど賢いからです。
次の変更を加えました。
Test.rb
require './aModule'
puts aModule::aConstant
cmd: ruby Test.rb
エラー: class/module name must be CONSTANT (SyntaxError)
aModule.rb
ヘルプ: Ruby の NameError
次の変更を加えました。
aModule.rb
module AModule # capital
aConstant = 7
end
Test.rb
require './AModule'
puts AModule::aConstant
cmd: ruby Test.rb
エラー: undefined method 'aConstant' for AModule:Module (NoMethodError)
ヘルプ:上記のリンクを使用しました。定数も大文字で名前を付ける必要があると思います。
最終的な作業コード:
aModule.rb
module AModule # capital
AConstant = 7 # capital
end
Test.rb
require './AModule'
puts AModule::AConstant
え、Rubyってこんなもんなの???./
そして、モジュール名がテストスクリプトと同じフォルダーにあるのに、なぜモジュール名の前に追加する必要があるのでしょうか?