2012-02-20 11 views
0

Yahoo Placemaker APIを使って対話するための宝石を作ろうとしていますが、問題が発生しています。私は次のコードを実行しようとすると私が取得:Rubyの名前空間の問題

NameError: uninitialized constant Yahoo::Placemaker::Net 
    from /Users/Kyle/.rvm/gems/ruby-1.9.2-p290/gems/yahoo-placemaker-0.0.1/lib/yahoo-placemaker.rb:17:in `extract' 
    from (irb):4 
    from /Users/Kyle/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in `<main>' 

ヤフー-placemaker.rb

require "yahoo-placemaker/version" 
require 'json' 
require 'ostruct' 
require 'net/http' 

module Yahoo 
    module Placemaker 
    def self.extract (text = '') 
     host = 'wherein.yahooapis.com' 
     payload = { 
     'documentContent' => text, 
     'appid' => APP_ID, 
     'outputType' => 'json', 
     'documentType' => 'text/plain' 
     } 

     req = Net::HTTP::Post.new('/v1/document') 
     req.body = to_url_params(payload) 
     response = Net::HTTP.new(host).start do |http| 
     http.request(req) 
     end 
     json = JSON.parse(response.body) 
     Yahoo::Placemaker::Result.new(json) 
    end 
    end 
end 

答えて

2

は私が正確一定の名前解決が(私はルールがここに少し厄介だと思う)Rubyでどのように動作するかを把握するためには至っていないが、私の経験から、それはよくNetが検索されることが考えられグローバルな名前空間ではなく現在の名前空間で使用します。完全修飾名を使用してみてください:

::Net::HTTP::Post.new 

同様の問題は、この行で発生する可能性があります:(それは現在の名前空間に住んでいるとして)

Yahoo::Placemaker::Result 

あなたは::Yahoo::Placemaker::Result以上Resultのいずれかでそれを置き換える必要があります。

0

前当期純/ HTTPを必要としてみます。 Rubyが定義されていない場合、Rubyはそれをモジュール内で見つけるために落ちています。

require 'net/http'

+0

そのビットを私のポストに貼り付けるのを忘れました。コード例を更新しました。 –

+0

このエラーを得るためにirbで正確に何を実行しますか? – iltempo

関連する問題