-1

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

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

2 回答 2

0

您是否尝试过以正常方式加载宝石?

require 'my_app_api'
MyAppAPI::Foo.bar()

常量名称 MyAppAPI 很好,不是问题的原因。有大量的 Ruby 核心类/模块的名称中有首字母缩略词:

于 2012-09-12T17:22:27.267 回答
0

尝试在声明后在 my_app_api.rb 中声明空模块require

module MyAppAPI
end

如果您依赖动态类和模块加载机制(如 Rails 使用),这可能会有所帮助。

我假设您的应用程序正在明确调用require "my_app_api". 这是什么类型的应用程序,你在哪里做的require

于 2012-09-14T17:25:48.503 回答