通过字符串声明新模块

时间:2015-08-05 19:51:31

标签: ruby metaprogramming

背景 我在两个远程系统之间的ruby中编写了一个数据同步应用程序。 它应该用于具有类似功能的多个客户端。我的想法是实现一个默认模块,并在客户端命名空间模块中的应用程序初始化过程中加载此模块(并且可能包括扩展标准功能的其他自定义客户端类)。

generic.rb

module DemoClass
  class A
    def demo1
      puts "Generic::A"
    end
  end

  class B
    def demo1
      puts "Generic::B"
    end
  end
end

在初始化过程中,客户端声明一个新的命名空间并包含默认函数。

但如何通过字符串声明新模块?

module ClientA
  require 'generic.rb'
end

module ClientB
  require 'generic.rb'

  module DemoClass
    class B
      def demo1
        puts "Client2::DemoClass:B"
      end
    end
  end

end

0 个答案:

没有答案