红宝石宝石与名称中的Acroynym

时间:2012-09-12 15:05:48

标签: ruby rubygems

[已解决:请参阅下面的评论]

我创建了一个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'

2 个答案:

答案 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

的位置