ruby gem模块范围内的变量在单独的文件中

时间:2018-02-07 21:21:51

标签: ruby

我有一个Gem我正在尝试编写我有多个文件来定义我的模块的类。结构如下所示:

/root_path
 |- lib/
 |  |- my_module/
 |     |- lib/
 |        |- some_class.rb
 |        |- another_class.rb
 |- my_module.rb

在我定义的/root_path/my_module.rb文件中:

module MyModule
  class << self
    attr_accessor :something
  end
  self.something = 'xyz'
end

/root_path/lib/my_module/lib/some_class.rb文件中,我想要打印模块something变量中的内容,如下所示:

module MyModule
  class SomeClass
    class << self

      def do_stuff
        puts MyModule.something
      end

    end
  end
end

但是,当我运行我的规范测试时,我收到以下消息:

  

未定义的方法`某事&#39;对于MyModule:模块

我在这里做错了什么?

更新1

我添加了require ./lib/my_module并将模块代码更改为:

module MyModule
  @@something

  def something
    @@something
  end
  def something=(something)
    @@something = something
  end
end

虽然有效,但感觉不对。

1 个答案:

答案 0 :(得分:1)

您可能忘记了require 'my_module'中的lib/my_module/lib/some_class.rb