gpt4 book ai didi

ruby - 试图构建一个 gem,得到一个 Gem::InvalidSpecificationException: "[...] are not files"

转载 作者:数据小太阳 更新时间:2023-10-29 06:29:55 25 4
gpt4 key购买 nike

我正在尝试构建一个我编写的名为 client_package 的自定义 gem,但它失败了。

我的目录结构是这样的:

client_package
Gemfile
Gemfile.lock
client_package.gemspec
Rakefile
Readme.md
.gitignore
.git
...git files...
lib
client_package.rb
client_package
version.rb
api.rb
...more...

我的client_package.gemspec 看起来像这样:

# encoding: UTF-8
require File.expand_path('../lib/client_package/version', __FILE__)

Gem::Specification.new do |s|
s.name = 'client_package'
s.version = ClientPackage::VERSION
s.platform = Gem::Platform::RUBY

s.files = `git ls-files`.split('\n')
s.executables = `git ls-files -- bin/*`.split('\n').map{ |f| File.basename(f) }
s.require_paths = ['lib']

# also have s.authors, s.email, s.homepage, s.summary, s.description

s.add_dependency 'httparty'
s.add_dependency 'json'
end

我所有的文件都已提交,git 状态是干净的。

从顶级 client_package 目录中,我运行 gem build client_package.gemspec 并得到这个错误:

ERROR:  While executing gem ... (Gem::InvalidSpecificationException)
[".gitignore
Gemfile
Rakefile
Readme.md
client_package.gemspec
lib/client_package.rb
lib/client_package/api.rb
lib/client_package/version.rb
lib/client_package/...more...
"] are not files

这让我感到困惑,因为那些对我来说肯定是文件。无论如何,我想如果它没有看到这些文件就会有一些路径问题,并且只是做了一些试验和错误我发现如果我进入一个目录(一个在顶级 client_package 之上)然后运行 gem build client_package/client_package.gemspec确实一开始似乎工作,创建文件 client_package-1.0.0.gem。但是仍然有问题。如果我随后使用 gem install client_package-1.0.0.gem 安装该 gem,这似乎也有效。但是然后这个:

require 'rubygems'
require 'client_package'

返回 LoadError:没有要加载的文件 -- client_package

我觉得我一定遗漏了一些小而重要的东西。有什么想法吗?

最佳答案

恢复这个旧线程的借口,但我发现了另一个原因:如果你没有 checkin git,一些旧的(已删除的文件)可能会干扰:它们在磁盘上不存在,但 git ls-files 可能会报告它们是包含在 gem 中。

检查文件,这个错误就结束了。

关于ruby - 试图构建一个 gem,得到一个 Gem::InvalidSpecificationException: "[...] are not files",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7815062/

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