gpt4 book ai didi

ruby - 运行 Ruby gem 时出错,但本地目录工作正常

转载 作者:太空宇宙 更新时间:2023-11-03 16:41:18 24 4
gpt4 key购买 nike

我构建了一个名为“Knitpickr”的 gem 并将其发布到 RubyGems.org。当我在其本地目录中运行该程序时,该程序运行良好;但是,当我安装 gem 并运行它时,我收到以下错误消息:

/usr/local/rvm/gems/ruby-2.3.1/gems/knitpickr-0.1.8/lib/knitpickr/controller.rb
:1:in `<top (required)>': uninitialized constant Knitpickr (NameError)
from /usr/local/rvm/gems/ruby-2.3.1/gems/knitpickr0.1.8/lib/knitpickr.
rb:4:in `require_relative'
from /usr/local/rvm/gems/ruby-2.3.1/gems/knitpickr-0.1.8/lib/knitpickr.
rb:4:in `<top (required)>'
from /usr/local/rvm/gems/ruby-2.3.1/gems/knitpickr-0.1.8/bin/knitpickr:
3:in `require_relative'
from /usr/local/rvm/gems/ruby-2.3.1/gems/knitpickr-0.1.8/bin/knitpickr:
3:in `<top (required)>'
from /usr/local/rvm/gems/ruby-2.3.1/bin/knitpickr:23:in `load'
from /usr/local/rvm/gems/ruby-2.3.1/bin/knitpickr:23:in `<main>'
from /usr/local/rvm/gems/ruby-2.3.1/bin/ruby_executable_hooks:15:in `ev
al'
from /usr/local/rvm/gems/ruby-2.3.1/bin/ruby_executable_hooks:15:in `<m
ain>'

我认为出于某种原因它无法识别 Knitpickr 模块命名空间。这是错误所指的代码:

class Knitpickr::Controller

我有 gemspec 文件集(或者,至少,据我所知)从 lib/knitpickr.rb 文件运行,其中包括以下内容:

require 'open-uri'
require 'nokogiri'

require_relative './knitpickr/controller'
require_relative './knitpickr/scraper'
require_relative './knitpickr/version'
require_relative './knitpickr/yarn'

module Knitpickr
end

模块在那里定义,所以我很困惑为什么“Knitpickr”在 controller.rb 文件中被视为未初始化的常量。

最让我困惑的是为什么该程序在其本地目录中运行良好但在运行 gem 时遇到错误。

gem 可以安装

gem install knitpickr

有人知道发生了什么事吗?

最佳答案

如果您查看跟踪,knitpickr 甚至在初始化 Knitpickr 模块之前就失败了。在初始化模块之前需要 Controller 。

将你的模块初始化移到 require 上面。

require 'open-uri'
require 'nokogiri'

module Knitpickr
end

require_relative './knitpickr/controller'
require_relative './knitpickr/scraper'
require_relative './knitpickr/version'
require_relative './knitpickr/yarn'

关于ruby - 运行 Ruby gem 时出错,但本地目录工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48738855/

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