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

私はrubygemsを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 に答える