rubygems - Building Rails 3 引擎抛出 Gem::Package::TooLongFileName 错误

标签 rubygems ruby-on-rails-3.2 rails-engines

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

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

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

最佳答案

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

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

  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

关于rubygems - Building Rails 3 引擎抛出 Gem::Package::TooLongFileName 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14371686/

相关文章:

ruby-on-rails - 对象ID和youtube视频ID与youtube_it gem相同

ruby-on-rails - 当我没有任何供应商/插件时,Rails 弃用警告

ruby-on-rails - 列出所有缓存片段的键

ruby-on-rails - 创建带有 rails generate 的 Controller 会导致一个奇怪的错误

ruby-on-rails -::ModuleName::ClassName 和 ModuleName::ClassName 有什么区别

ruby-on-rails - 如何从 Rails 引擎在开发组中添加 gem?

ruby-on-rails - 将 Rails 引擎连接到全局布局中

ruby-on-rails - 从 Engine in Rails 3.x 应用程序重新打开模型和 Controller

Macos Catalina 更新后出现错误 : unable to run colorls

ruby - 从命令行编译 LESS 文件时,recess 的错误输出到哪里去了?