gpt4 book ai didi

Ruby 命名空间问题

转载 作者:行者123 更新时间:2023-12-04 17:00:47 25 4
gpt4 key购买 nike

我正在尝试构建一个用于与 Yahoo Placemaker API 交互的 gem,但我遇到了一个问题。当我尝试运行以下代码时,我得到:

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>'

yahoo-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

最佳答案

我还没有弄清楚 Ruby 中常量名称解析究竟是如何工作的(我认为这里的规则有点困惑),但根据我的经验,很可能是 Net在当前命名空间而不是全局命名空间中查找。尝试使用完全限定名称:

::Net::HTTP::Post.new

在这一行中可能会出现类似的问题:
Yahoo::Placemaker::Result

您应该将其替换为 ::Yahoo::Placemaker::Result或更好 Result (因为它存在于当前命名空间中)。

关于Ruby 命名空间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9368609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com