我试图建立一个宝石,但我不断得到:
WARNING: See http://guides.rubygems.org/specification-reference/ for help
ERROR: While executing gem ... (Gem::InvalidSpecificationException)
[*list of about 300 file paths*]
are not files
我知道这些文件必须被添加到git中,我已经这样做了,所有的东西都是最新的。
让我印象深刻的是,列表中的文件路径是一个子目录的路径,但该路径缺少几个文件夹。
示例:
In list: bin/some_file.jar
Actual file: bin/some_library/lib/some_file.jar
我怀疑这与我的git是如何设置的有关,因为我的gem在一个"mother git folder"里,这个文件夹里有几个项目,包括几个gem,如下所示:
Mother Folder
-> .git
-> GemFolder1
-> GemFolder2
-> SomeOtherProject
看来,我是漫步都建立和安装gem1,但gem2给我这些错误。
最初我有一个文件夹名为.
的文件夹,所以我认为这是问题所在,所以我重命名了这个文件夹,将所有的修改添加到git中,然后重试,但是,我仍然遇到了同样的问题。
我觉得这很奇怪,这让我怀疑宝石本身有一些奇怪的bug。
另外,当我手动运行
`git ls-files -z`.split("\x0")
在Ruby中,显示为"不是文件"的文件最初甚至不存在于这个列表中。
这是怎么回事?
3条答案
按热度按时间ymzxtsji1#
我知道是什么原因了:
我的gemspec文件中有默认设置,这将创建以下行:
发生的情况是
bin
文件夹内的子文件夹中的任何文件都将从文件路径中剥离,因此bin/some_folder/some.executable
将转换为bin/some.executable
。在我看来,这是bundler默认设置中的一个错误。
因为我有一个非常小的宝石,我简单地解决了这个问题,写:
我相信我不需要将我的文件注册为可执行文件(我可能错了)。
你也可以这样写:
对于大多数人来说,这是一个更合适的解决方案。对我来说,它没有工作,因为我有一些非可执行文件在那里造成的问题。
希望这对外面的人有帮助:)
n6lpvg4x2#
我的问题是
最初被写成
...用单引号。改变它为我修复了它,虽然不知道它为什么一开始就坏了...
pgpifvop3#
重命名gem包后,我遇到了同样的问题。
对我来说解决了什么:
1 -读取生成的gemspec
2 -运行
3 -打造您的宝石