【问题标题】:gem contains itself error for CLI Data gemgem 包含 CLI 数据 gem 的自身错误
【发布时间】:2017-04-03 21:02:43
【问题描述】:

我刚刚构建了一个 CLI Data gem 并将其发布到 RubyGems。现在,如果我尝试进行捆绑安装,则会收到以下错误

``

You have one or more invalid gemspecs that need to be fixed. 
  The gemspec at 
  /home/himachhag-45739/code/popular-deals-from-slickdeals.net-`cli/popular_deals.gemspec` 
  is not valid. Please fix this gemspec. 
  The validation error was 'popular_deals-0.1.0 contains itself 
  (popular_deals-0.1.0.gem), check your files list'

请看下面我的 gmspec 文件:

# coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'popular_deals/version'

Gem::Specification.new do |spec|
  spec.name          = "popular_deals"
  spec.version       = PopularDeals::VERSION
  spec.authors       = ["'Hima Chitalia'"]
  spec.email         = ["'hima_chhag@yahoo.com'"]

  spec.summary       = %q{It displays popular deals of the day from https://slickdeals.net/deals/.}
  #spec.description   = %q{It displays popular deals of the day from https://slickdeals.net/deals/.}
  spec.homepage      = "https://github.com/HimaChitalia/popular_deals"
  spec.license       = "MIT"

  spec.files         = `git ls-files -z`.split("\x0").reject do |f|
     f.match(%r{^(test|spec|features)/})
   end
    spec.bindir        = "exe"
   spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
   spec.require_paths = ["lib"]

  spec.add_development_dependency "bundler", "~> 1.14"
  spec.add_development_dependency "rake", "~> 10.0"
  spec.add_development_dependency "pry"

  spec.add_dependency "nokogiri"
  spec.add_dependency "colorize"

end

我应该怎么做才能解决这个问题?提前感谢您的帮助。

【问题讨论】:

    标签: ruby rubygems bundle


    【解决方案1】:

    来自http://siawyoung.com/coding/ruby/invalid-gemspec.html

    事实证明这是因为 gemspec 从命令中获取了文件列表

    `git ls-files -z`.split("\x0")
    

    所以从存储库中删除文件popular_deals-0.1.0.gem,它应该可以工作。

    【讨论】:

    • 非常感谢您的建议,但没有奏效! :-(
    • @HimaChhag 您是否将文件删除推送到 gem 存储库?我仍然可以在github.com/HimaChitalia/popular-deals-from-slickdeals.net-cli看到它
    • .. 不,我没有,我只是想先在本地找到解决方案。我也有吗?
    • bundle install 去 gem 存储库安装它,我想是的,除非你在 Gemfile 中指定本地源路径。
    • 你是对的!删除 .gem 文件后,我将所有内容推送到 github 上,我删除了本地副本,再次克隆,它开始工作了!但这给了我一个问题,我们不需要在我们的 repo 中使用这个文件来让我们的 gem 工作吗?没有这个文件 gem 将如何工作?
    【解决方案2】:
    rm popular_deals-0.1.0.gem
    git add .
    bundle install
    

    注意,您需要在 bundle install 之前 git add .,因为您需要更新文件列表。

    【讨论】:

    • 你真的救了我——我已经删除了,但在安装包之前没有运行 git add。谢谢!
    【解决方案3】:

    我发现另一个不符合我需要的答案是将我所有不同的版本上传到我的仓库。

    几分钟前我遇到了同样的问题,尝试将您的 gemspec 'files' 属性修改为:

    spec.files = Dir.glob("{bin,lib}/**/*")
    

    让我知道它是否对你有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-07
      相关资源
      最近更新 更多