gpt4 book ai didi

ruby-on-rails - 类是必需的,但无法访问

转载 作者:数据小太阳 更新时间:2023-10-29 07:19:16 26 4
gpt4 key购买 nike

我有一个非常奇怪的错误,我无法理解。

基本上,我的 lib 文件夹中有这个类:

# lib/api/amazon.rb
module API
class Amazon
...
end
end

当我想在某处使用它时,我需要它:

require 'api/amazon'
API::Amazon.do_stuff

这最初有效,但一段时间后它中断并引发 NameError: uninitialized constant API::Amazon。当我对此进行调试并在出现错误时再次尝试 require 文件时,它返回 false,表明文件已经加载。我也可以在 $"(这个加载文件列表)中看到它。为什么我不能访问 API::Amazon

注意:我在 ActiveSupport::Inflector 中添加了“API”作为首字母缩写词,这就是我不必使用“Api”的原因:

# config/initializers/inflections.rb
ActiveSupport::Inflector.inflections do |inflect|
inflect.acronym 'API'
end

编辑:

我也尝试了 ::API::Amazon.do_stuff,结果相同。

最佳答案

我写了一些代码旨在获得与您相同的结果,也许它可以提供一些线索。

trytemp.rb:

module API
class Amazon
def hello
puts "API::Amazon initially works well"
$stdout.flush
end
end
end

s = API::Amazon.new
s.hello

p API.constants
API = Module.new
p API.constants # Here you can see constant Amazon disappers from module API
s = API::Amazon.new
s.hello

它最初运行良好,然后出现相同的错误,“未初始化的常量 API::Amazon (NameError)”:

$ ruby trytemp.rb
API::Amazon initially works well
[:Amazon]
trytemp.rb:15: warning: already initialized constant API
[]
trytemp.rb:19:in `<main>': uninitialized constant API::Amazon (NameError)

关于ruby-on-rails - 类是必需的,但无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20453152/

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