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

时间:2013-01-17 03:17:15

标签: gem ruby-on-rails-3.2 rails-engines

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

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

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

3 个答案:

答案 0 :(得分:7)

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

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

  1. 文件的相对路径,包括文件名本身,大于256个字符
  2. 文件名大于100个字符
  3. 文件前缀大于155个字符
  4. 我希望这会有所帮助。我已附上以下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文件夹来解决它,因为它们包含长文件名