构建Rails 3引擎抛出Gem :: Package :: TooLongFileName错误

Joh*_*ohn 4 gem rails-engines ruby-on-rails-3.2

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

ERROR:  While executing gem ... (Gem::Package::TooLongFileName)
    Gem::Package::TooLongFileName
Run Code Online (Sandbox Code Playgroud)

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

Joh*_*ohn 8

我通过查找导致问题的确切文件解决了这个问题 - 它是一个具有长名称的迁移文件.

对于那些感兴趣的人,从源代码split_nameTarWriter类方法抛出错误rubygems.如果出现以下情况,则会抛出此错误

  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
Run Code Online (Sandbox Code Playgroud)