{"record":{"id":"b98c6ff0db22af74","repo":"ruby/rubygems","slug":"file-name-has-a-too-long-path-should-be-256","errorCode":null,"errorMessage":"File \"#{name}\" has a too long path (should be 256 or less)","messagePattern":"File \"#(.+?)\" has a too long path \\(should be 256 or less\\)","errorType":"exception","errorClass":"Gem::Package::TooLongFileName","httpStatus":null,"severity":"error","filePath":"lib/rubygems/package/tar_writer.rb","lineNumber":308,"sourceCode":"\n    name, prefix = split_name(name)\n\n    header = Gem::Package::TarHeader.new name: name, mode: mode,\n                                         typeflag: \"5\", size: 0,\n                                         prefix: prefix,\n                                         mtime: Gem.source_date_epoch\n\n    @io.write header\n\n    self\n  end\n\n  ##\n  # Splits +name+ into a name and prefix that can fit in the TarHeader\n\n  def split_name(name) # :nodoc:\n    if name.bytesize > 256\n      raise Gem::Package::TooLongFileName.new(\"File \\\"#{name}\\\" has a too long path (should be 256 or less)\")\n    end\n\n    prefix = \"\"\n    if name.bytesize > 100\n      parts = name.split(\"/\", -1) # parts are never empty here\n      name = parts.pop            # initially empty for names with a trailing slash (\"foo/.../bar/\")\n      prefix = parts.join(\"/\")    # if empty, then it's impossible to split (parts is empty too)\n      while !parts.empty? && (prefix.bytesize > 155 || name.empty?)\n        name = parts.pop + \"/\" + name\n        prefix = parts.join(\"/\")\n      end\n\n      if name.bytesize > 100 || prefix.empty?\n        raise Gem::Package::TooLongFileName.new(\"File \\\"#{prefix}/#{name}\\\" has a too long name (should be 100 or less)\")\n      end\n\n      if prefix.bytesize > 155\n        raise Gem::Package::TooLongFileName.new(\"File \\\"#{prefix}/#{name}\\\" has a too long base path (should be 155 or less)\")","sourceCodeStart":290,"sourceCodeEnd":326,"githubUrl":"https://github.com/ruby/rubygems/blob/86cbb817a38ce8477b181c17467a703ded3f2be8/lib/rubygems/package/tar_writer.rb#L290-L326","documentation":"Error \"File \"#{name}\" has a too long path (should be 256 or less)\" thrown in ruby/rubygems.","triggerScenarios":"Thrown at lib/rubygems/package/tar_writer.rb:308 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Shorten the file's full path to 256 characters or fewer and rebuild the gem"],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"86cbb817a38ce8477b181c17467a703ded3f2be8","analyzedAt":"2026-08-23T06:27:48.159Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}