加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 01:46:56 所属栏目:百科 来源:网络整理
导读:我正在尝试使用gem build myengine构建我的引擎,但我一直收到以下错误: ERROR: While executing gem ... (Gem::Package::TooLongFileName) Gem::Package::TooLongFileName 我不认为myengine不会太长.知道这里可能会发生什么吗? 解决方法 我通过查找导致问
我正在尝试使用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读