Проблема в том, что вы никогда не определяете константу Project
. Вы должны определить это, прежде чем сможете его использовать. Пример:
# root.rb
module Project
end
require "project/test"
# project/test.rb
class Project::Test
end
После этого вы сможете запустить ruby root.rb
. Другой подход заключается в том, чтобы указать модуль в пространстве имен.
# root.rb
require "project/test"
# project/test.rb
module Project
class Test
end
end
В этом примере вы также можете запустить ruby project/test.rb
, поскольку в этом файле определен модуль Project
.
И если у вас есть несколько файлов, определяющих модуль Project
, это тоже не проблема. Он не будет переопределен, он всегда будет одним и тем же модулем.
Оба эти метода будут определять модуль Project
. Однако простое использование Project::Test
не определит модуль.
В качестве идентификатора у Rails есть автозагрузчик. Если вы работаете с приложением rails и используете определенную структуру папок, для вас будут определены промежуточные модули такого типа. Однако без Rails вы должны определить их самостоятельно.