我正在构建一个RubyGem来生成测试数据,并且在构建它时遇到了问题。我有一个主要的syke.rb
文件,它是从最初的gem版本生成的。
require "syke/version"
require "syke/internet"
mydir = __dir__
require 'i18n'
I18n.load_path += Dir[File.join(mydir, 'locales', '**/*.yml')]
I18n.available_locales = [:en]
module Syke
class Core
class << self
def get(key)
I18n.t("syke.#{key}")
end
end
end
end
我正在尝试从.yml
文件中提取值,因此在我的internet.rb
文件中,我这样:
module Syke
class Internet < Core
class << self
def email
get('internet.domain')
end
end
end
end
我目前正在尝试使用rspec测试应用程序时出现此错误:
NameError:未初始化的常量Syke :: Core
我的Internet类继承了Syke模块下的Core类,因此我很困惑为什么会收到此错误消息。有人知道吗谢谢。
答案 0 :(得分:1)
问题在于您的require "syke/internet"
在定义Syke::Core
之前。
就个人而言,我会将Syke::Core
的定义移到它自己的文件中,您可以在主syke.rb
文件中(在需要Internet之前)或在internet.rb
文件本身中进行定义。