-1

[解決済み: 以下の私のコメントを参照してください]

アプリケーションの API my_app_api に接続する Ruby Gem を作成しました。私はそれを次のように使用したいと思います: 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.rb で空のモジュールを宣言してみてください。

module MyAppAPI
end

これは、(Rails が使用するような) 動的なクラスとモジュールの読み込みメカニズムに依存している場合に役立ちます。

あなたのアプリが明示的に呼び出していると思いますrequire "my_app_api"。これはどのようなアプリで、どこで何をしていrequireますか?

于 2012-09-14T17:25:48.503 に答える
0

通常の方法で gem を読み込んでみましたか?

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

定数名 MyAppAPI は問題なく、問題の原因ではありません。名前に頭字語が含まれる Ruby コア クラス/モジュールはたくさんあります。

于 2012-09-12T17:22:27.267 に答える