我正在尝试使用 gem build myengine
构建我的引擎,但我不断收到以下错误:
ERROR: While executing gem ... (Gem::Package::TooLongFileName)
Gem::Package::TooLongFileName
我不希望 myengine
的名字不会太长。知道这里会发生什么吗?
最佳答案
我通过找到导致问题的确切文件解决了这个问题 - 它是一个名称很长的迁移文件。
对于那些感兴趣的人,错误是从 rubygems
源代码的 TarWriter
类的 split_name
方法引发的。如果出现以下情况,则会抛出此错误:
- 文件的相对路径(包括文件名本身)大于 256 个字符
- 文件名超过 100 个字符
- 文件前缀超过 155 个字符
我希望这有帮助。我已附上下面 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
关于rubygems - Building Rails 3 引擎抛出 Gem::Package::TooLongFileName 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14371686/