4

我正在尝试使用构建我的引擎,gem build myengine但我不断收到以下错误:

ERROR:  While executing gem ... (Gem::Package::TooLongFileName)
    Gem::Package::TooLongFileName

我不希望myengine名字不会太长。知道这里可能会发生什么吗?

4

3 回答 3

8

我通过找到导致问题的确切文件解决了这个问题——它是一个名称很长的迁移文件。

对于那些感兴趣的人,错误是从源代码的类的split_name方法中抛出的。如果出现以下情况,将引发此错误:TarWriterrubygems

  1. 文件的相对路径,包括文件名本身,大于 256 个字符
  2. 文件名大于 100 个字符
  3. 文件前缀大于 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
于 2013-03-25T21:55:28.527 回答
4

我通过将 ruby​​gems 更新到 1.8.25 (gem update --system) 解决了这个问题

-编辑-

检查您的 project.gemspec 文件:注释掉

s.files = ... or s.test_files = ...

如果您的项目中有任何文件名称太长

于 2013-02-05T09:45:28.920 回答
1

我遇到了同样的问题并通过删除 test/dummy/tmp 文件夹和 .sass_cache 文件夹来解决它,因为它们包含长文件名

于 2013-03-04T10:38:58.163 回答