-2

好的,正如@tim-moore 所问,我将在新问题中发布它。

好的,所以我想使用 bundle 制作 gem。Pry 扩展 gem 要求 gem 以pry-开头,如此所述。我用了:

bundle gem pry-name

但它弄乱了我的文件结构

create  pry-name/pry-name.gemspec
create  pry-name/lib/pry/name.rb
create  pry-name/lib/pry/name/version.rb

如您所见,它创建了lib/pry目录。我知道创建这样的结构是 gem 的风格,但现在我无法自动加载这个 gem

我的问题的一个解决方案是:

创建仅包含的 pry-name.rbrequire 'pry/name'

完成此操作并构建 gem 后,我开始撬:出现此消息:

require 'pry-name' # Failed, saying: Pry is not a module

至于我的猜测:

我正在创建这样的命令:

Pry::Commands.create_command "name-of-command" do 
  # my code goes here
end

并且,因为 ruby​​ 发现Pry::Commands.它需要它来自lib目录而不是 Pry gem。

这个错误是什么意思。为什么它不起作用。如何让它工作记住 gem 和 pry 要求(pry gem 以开头,pry-并且当有人使用时 gem 将创建另一个目录(ies)-例如:gem pry-namewill make pry/name

4

1 回答 1

2

在新创建的 gem 中的任何地方module Pry,将其更改为:class Pry。由于Pry已定义(作为类),因此您无法将其重新定义/重新打开为模块。

于 2013-11-10T14:11:49.610 回答