[已解决:请参阅下面的评论]
我创建了一个Ruby Gem来连接我应用程序的API:my_app_api。我想这样使用它:MyAppAPI::Foo.bar()
。但是,我得到了:
NameError: uninitialized constant MyAppAPI
我知道调用/命名的标准方法是MyAppApi::Foo.bar()
,但我更喜欢使用首字母缩略词类命名约定。如何指定/加载模块?
作为参考,该课程如下:
module MyAppAPI
class Foo < ActiveResource::Base
extend MyAppAPI
self.site = 'http://localhost:3000/api/'
self.format = :json
class << self
def bar
return 'huzzah!'
end
end
end
end
my_app_api.rb
文件如下所示:
require "rubygems"
require 'active_resource'
require 'my_app_api/foo'
答案 0 :(得分:0)
您是否尝试过正常加载宝石?
require 'my_app_api'
MyAppAPI::Foo.bar()
常量名称MyAppAPI很好,不是问题的原因。有大量的Ruby核心类/模块在其名称中有缩写词:
答案 1 :(得分:0)
在require
语句后尝试在my_app_api.rb中声明空模块:
module MyAppAPI
end
如果您依赖于动态类和模块加载机制(如Rails使用),这可能会有所帮助。
我认为您的应用正在明确调用require "my_app_api"
。这是什么类型的应用程序,以及您在require
?