【问题标题】:Building pry plugin(gem) with bundler使用捆绑器构建 pry 插件(gem)
【发布时间】:2013-11-02 22:53:44
【问题描述】:

正如here pry 的解释,插件需要 pry- 前缀。 我尝试使用捆绑器进行构建:

bundle gem pry-name

但它弄乱了目录层次结构(创建 2 个目录而不是 1 个目录):

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

在 gemspec 中它使用了错误的目录结构:

  require 'pry/name/version'

并在同一个文件中运行这个 git 命令:

  spec.files         = `git ls-files`.split($/)

与上面一样,文件结构错误

有没有办法告诉捆绑器将“-”识别为有效的文件名字符而不是“/”(目录分隔符)?

【问题讨论】:

    标签: git gem bundler pry


    【解决方案1】:

    bundle gem 按照 Rubygems 命名 gem 的约定工作,如 http://guides.rubygems.org/name-your-gem/ 所述

    请注意,如果您在使用Bundler.require 的项目的Gemfile 中包含gem 'pry-name',它也会默认使用那里的约定,并尝试使用require 'pry/name'

    最好的解决方法是创建一个只包含require 'pry/name'lib/pry-name.rb 文件。这使您的目录结构与 Rubygems & Bundler 约定保持一致,允许require 'pry/name' 工作,同时也允许require 'pry-name' 工作。

    【讨论】:

    • 好吧,它不起作用。在我将pry-name.rb 添加到 git(git add lib/pry-name.rb) 并构建/安装 gem 之后,pry 在开始时显示:require 'pry-name' # Failed, saying: Pry is not a module。我的猜测是,在我的代码中,我使用的是 Pry::Commands.create_command,而 ruby​​ 假设 Pry 位于 pry-name/lib/pry 目录中,并且它不会从 pry gem 加载 Pry 模块。
    • 谢谢。很高兴看到您在那里找到了解决方案。如果您认为我对您关于 Bundler 和目录结构的原始问题给出了一个很好的答案,如果您能接受它会很好。 :) 谢谢!
    • 是的,你是对的,但缺少 2 个信息(我的第二个问题中的一个):运行(将 pry-name.rb 添加到 git)git add lib/pry-name.rb 并更改每个module Pryclass Pry,我不知道 stackoverflow 如何处理这种情况(我应该编辑你的答案还是添加新的答案,或者评论(比如这个)会很好?)。现在我接受了你的答案,我会在检查常见问题(或其他内容)后添加其余的,或者如果你有时间,请随时添加。附言。我应该感谢你。 :)
    • 谢谢 :) 我有点认为如何将文件添加到 git 以及类与模块的问题是单独的问题,但如果您愿意,请随时编辑答案。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    • 2016-02-21
    • 2012-07-24
    • 1970-01-01
    相关资源
    最近更新 更多