【问题标题】:Pry is not a module撬不是一个模块
【发布时间】:2013-11-10 12:14:23
【问题描述】:

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

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

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

my question 的一个解决方案是:

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

在完成此操作并构建 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 将创建另一个目录,例如:gem pry-name 将使 pry/name

【问题讨论】:

  • 不要指望这个问题的读者知道你以前的问题。使这个问题独立。写下所有必要的东西。不要指望人们会回到你的另一个问题来弄清楚你在写什么。顺便说一句,你的问题是什么?我没有看到。
  • @sawa 好的,我已经编辑了这个问题

标签: ruby gem pry


【解决方案1】:

在您新创建的 gem 中包含 module Pry 的所有位置,将其更改为:class Pry。由于Pry 已经定义(作为一个类),因此您不能将其重新定义/重新打开为一个模块。

【讨论】:

    猜你喜欢
    • 2015-01-07
    • 2014-08-27
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    相关资源
    最近更新 更多