From: Brad Ottoson Date: 2008-02-16T16:48:44+09:00 Subject: Code organization and modules I'm working on an application for generating code skeletons from xml template files and have run into a snag. I'm trying to organize a set of code in a directory and inside that use modules. I have a set of files in a subdirectory of my project directory called lang_cpp. I'll paste in some code to show what I'm trying. --method_constructor.rb(in lang_cpp directory): module XTECpp::MethodConstructor def getDeclaration(codeClass) return " " + codeClass.name + "();\n" end end --method_destructor.rb(in lang_cpp directory): module XTECpp::MethodDestructor def getDeclaration(codeClass) return " ~" + codeClass.name + "();\n" end end Later in some other code I include the files using: require 'lang_cpp/method_constructor.rb' require 'lang_cpp/method_destructor.rb' which seems to work fine. Later on I try the following: case funItem.name when "empty_constructor" headerString << XTECpp::MethodConstructor::getDeclaration(codeClass) when "empty_destructor" headerString << XTECpp::MethodDestructor::getDeclaration(codeClass) when "operator_equality_assignment" headerString << XTECpp::MethodEqualityAssign::getDeclaration(codeClass) when "readugp" headerString << XTECpp::MethodReadUGP::getDeclaration(codeClass) end and when I run it I get the error: C:\code\Ruby\XMLTemplateEngine\lib/lang_cpp/method_constructor.rb:5: uninitialized constant XTECpp (NameError) from C:\code\Ruby\XMLTemplateEngine\lib/lang_cpp.rb:6:in `require' from C:\code\Ruby\XMLTemplateEngine\lib/lang_cpp.rb:6 from C:/code/Ruby/XMLTemplateEngine/lib/main.rb:6:in `require' from C:/code/Ruby/XMLTemplateEngine/lib/main.rb:6 I tried changing the module names to the form XTECpp_MethodConstructor so each function was in it's own unique module but I got errors doing that too. I'm not sure if you can ever do things this way in Ruby but I'd like to since this organization appeals to me.