我正在尝试使用gem build myengine
构建引擎,但我一直收到以下错误:
ERROR: While executing gem ... (Gem::Package::TooLongFileName)
Gem::Package::TooLongFileName
我不希望myengine
不要太长。知道这里可能会发生什么吗?
答案 0 :(得分:7)
我通过查找导致问题的确切文件解决了这个问题 - 它是一个具有长名称的迁移文件。
对于那些感兴趣的人,错误是从split_name
源代码的TarWriter
类的rubygems
方法中抛出的。如果出现以下情况,则会抛出此错误:
我希望这会有所帮助。我已附上以下split_name
方法的源代码供审核。
def split_name(name) # :nodoc:
raise Gem::Package::TooLongFileName if name.size > 256
if name.size <= 100 then
prefix = ""
else
parts = name.split(/\//)
newname = parts.pop
nxt = ""
loop do
nxt = parts.pop
break if newname.size + 1 + nxt.size > 100
newname = nxt + "/" + newname
end
prefix = (parts + [nxt]).join "/"
name = newname
if name.size > 100 or prefix.size > 155 then
raise Gem::Package::TooLongFileName
end
end
return name, prefix
end
答案 1 :(得分:4)
我通过将rubygems更新为1.8.25(gem update --system)
解决了这个问题-edit -
检查你的project.gemspec文件: 评论
s.files = ... or s.test_files = ...
如果项目中的文件名称太长
答案 2 :(得分:1)
我有同样的问题并通过删除test / dummy / tmp文件夹和.sass_cache文件夹来解决它,因为它们包含长文件名