简体   繁体   English

Rails如何解决错误文件名太长@ rb_sysopen

[英]Rails How to resolve Error File name too long @ rb_sysopen

I have an app where I can generate reports and when I'm trying to generate one I have this error Error File name too long @ rb_sysopen and a very long stuff see below. 我有一个可以在其中生成报告的应用程序,当我尝试生成报告时,出现此错误错误文件名太长@ rb_sysopen和很长的东西,请参见下文。 What I want to understand what could be the reason of this error. 我想了解的可能是此错误的原因。 What should I look? 我应该看什么

Errno::ENAMETOOLONG at /study_versions/2/export_acrf.2
File name too long @ rb_sysopen - /Users/jakublemiszewski/Desktop/A3informatics/Tourmalet/Tourmalet/public/<html><head><style>h1 { font-family: Arial, "Helvetica Neue", Helvetica, sans-serif; font-size: 24pt; line-height: 34pt; }
h1.title { font-family: Arial, "Helvetica Neue", Helvetica, sans-serif; font-size: 24pt; line-height: 30pt; text-align: center; margin-top: 0; }
h2 { font-family: Arial, "Helvetica Neue", Helvetica, sans-serif; font-size: 18pt; line-height: 28pt; }

This continues for many rows in the error message. 对于错误消息中的许多行,此操作继续进行。

However, I have no idea where to look I spent hours to understand and cannot see a solution for it. 但是,我不知道在哪里看,我花了几个小时来理解,却找不到解决方案。

I believe the error comes from this class: 我相信错误来自于此类:

class PdfReport

  C_CLASS_NAME = "PdfReport"

  def self.create(title, sub_title, user, body_html)
    paper_size = "A4"
    html = page_header()
    html += title_page(title, sub_title, user)
    # Document history
    html += body_html
    # Completion instructions
    html += page_footer()
    #ConsoleLogger.log(C_CLASS_NAME, "create", "HTML=" + html.to_s)
    # pdf = WickedPdf.new.pdf_from_string(html, :page_size => paper_size, :footer => {:font_size => "10", :font_name => "Arial, \"Helvetica Neue\", Helvetica, sans-serif", :left => "", :center => "", :right => "[page] of [topage]"} )
    cls = [{:status=> ["created", "no_change", "updated"], :prefered_term => "test term", :notation => "This is test notation" }]
    results = [{ bc_demo: 'demo'}]
    pdf = CdiscChangesReport.new.create(results, cls, User.last, html)
    return pdf
  end

  def self.page_header
    html = "<html><head>"
    html += "<style>"
    html += "h1 { font-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif; font-size: 24pt; line-height: 34pt; }\n"
    html += "h1.title { font-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif; font-size: 24pt; line-height: 30pt; text-align: center; margin-top: 0; }\n"
    html += "h2 { font-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif; font-size: 18pt; line-height: 28pt; }\n"
    html += "h2.title { font-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif; font-size: 18pt; line-height: 24pt; text-align: center; margin-top: 0; }\n"
    html += "h3 { font-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif; font-size: 16pt; }\n"
    html += "h4 { font-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif; font-size: 14pt; }\n"
    html += "h5 { font-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif; font-size: 12pt; }\n"
    html += "p { font-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif; font-size: 10pt; }\n"
    html += "table tr td { font-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif; font-size: 10pt; text-align: left; vertical-align: top; padding: 5px;}\n"
    html += "table.simple { border: 1px solid black; border-collapse: collapse; width: 100%;}\n"
    html += "table.simple tr td { border: 1px solid black; font-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif; font-size: 10pt; text-align: left; vertical-align: top; padding: 5px;}\n"
    html += "table.simple tr th { border: 1px solid black; font-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif; font-size: 10pt; text-align: left; vertical-align: top; padding: 5px;}\n"
    html += "table.form_table { border: 1px solid black; width: 100%;}\n"
    html += "table.form_table tr td { font-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif; font-size: 10pt; text-align: left; vertical-align: top; padding: 5px;}\n"
    html += "table.form_table h4 { vertical-align: middle;}\n"
    html += "table.form_table td:first-child{ font: bold; }\n"
    html += "table.form_repeat { border: 1px solid black; width: 100%;}\n"
    html += "table.form_repeat th { font-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif; font-size: 10pt; text-align: left; vertical-align: top; }\n"
    html += "table.form_repeat tr td { font-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif; font-size: 10pt; text-align: left; vertical-align: top;}\n"
    html += "table.details tr td { font-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif; font-size: 11pt; text-align: left; vertical-align: top; padding: 1px; }\n"
    html += "table.ci { border: 1px solid black; width: 100%; border-collapse: collapse;}\n"
    html += "table.ci tr td { font-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif; font-size: 10pt; text-align: left; vertical-align: top; padding: 5px; border-bottom: 1pt solid black; }\n"
    html += ".ci td table, .ci td table tbody, .ci td table td { border:none; }\n" # Stops inheritence into markdown
    html += "table.note { border: 1px solid black; width: 100%;}\n"
    html += "table.note tr td { font-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif; font-size: 10pt; font: bold; text-align: left; vertical-align: top; }\n"
    html += "table.input_field { border-left: 1px solid black; border-right: 1px solid black; border-bottom: 1px solid black;}\n"
    html += "table.input_field tr td { font-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif; font-size: 8pt; text-align: center; vertical-align: center; padding: 5px; }\n"
    html += "table.input_field td:not(:last-child){border-right: 1px dashed}\n"
    html += "table.cl_field tr td { font-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif; font-size: 10pt; text-align: left; vertical-align: center; padding: 2px; }\n"
    html += "table.cl_field td:first-child{ border: 1px solid black; }\n"
    html += "tr.warning { background-color: #fcf8e3 !important; }\n"
    html += "</style>"
    html += "</head><body>"
    return html
  end

  def self.page_footer
    html = "</body></html>"
    return html
  end

  def self.title_page(title, sub_title, user)
    name = ENV['organization_title']
    image_file = ENV['organization_image_file']
    dir = Rails.root.join("app", "assets", "images")
    file = File.join(dir, image_file)
    time_generated = Time.now
    # Generate HTML
    html = "<br><br><div style=\"text-align: center;\"><img src=\"#{file}\" style=\"height:75px;\"></div>"
    html += "<h2 class=\"title\">#{name}</h2>"
    html += "<br>" * 10
    html += "<h1 class=\"title\">#{title}<br>#{sub_title}</h1>"
    html += "<br>" * 23
    html += "<table class=\"details\" align=\"right\"><tr><td>Run at:</td><td>#{time_generated.strftime("%Y-%b-%d, %H:%M:%S")}</td></tr><tr><td>Run by:</td><td>#{user.email}</td></tr></table>"
    html += page_break
    return html
  end

  def self.page_break
    return "<p style='page-break-after:always;'></p>"
  end

end 

File systems have limits to the length of the path of the filename. 文件系统对文件名路径的长度有限制。 Your error shows that you're naming your file with the contents of your file, which is probably why you're hitting this limit. 您的错误表明您正在使用文件内容命名文件,这可能就是您达到此限制的原因。

From your error message, here is your attempted filename: 根据错误消息,这是您尝试的文件名:

/Users/jakublemiszewski/Desktop/A3informatics/Tourmalet/Tourmalet/public/<html><head><style>h1 { font-family: Arial, "Helvetica Neue", Helvetica, sans-serif; font-size: 24pt; line-height: 34pt; }
h1.title { font-family: Arial, "Helvetica Neue", Helvetica, sans-serif; font-size: 24pt; line-height: 30pt; text-align: center; margin-top: 0; }
h2 { font-family: Arial, "Helvetica Neue", Helvetica, sans-serif; font-size: 18pt; line-height: 28pt; }

Giving your file a proper name should resolve your issue. 给文件起一个适当的名称应该可以解决您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Rails CSV 导入 - 文件名太长 @ rb_sysopen - Rails CSV Import - File name too long @ rb_sysopen 用rails提取tar文件:Errno :: ENAMETOOLONG:文件名太长@ rb_sysopen - Extracting tar file with rails : Errno::ENAMETOOLONG: File name too long @ rb_sysopen 如何修复“请运行 rails webpacker:安装错误:没有这样的文件或目录@rb_sysopen”? - How to fix 'Please run rails webpacker: install Error: No such file or directory @ rb_sysopen"? 没有这样的文件或目录@ rb_sysopen - No such file or directory @ rb_sysopen 没有这样的文件或目录@rb_sysopen - - No such file or directory @ rb_sysopen - 面对问题“读取”:rails中没有这样的文件或目录@&gt; rb_sysopen - Facing issue `read': No such file or directory @ > rb_sysopen in rails Rails应用程序的正确路径或权限? -没有这样的文件或目录@ rb_sysopen - Correct path or permissions for Rails app? - No such file or directory @ rb_sysopen rails 4:Errno :: ENOENT(没有这样的文件或目录@ rb_sysopen - / assets / - rails 4: Errno::ENOENT (No such file or directory @ rb_sysopen - /assets/ Rails 控制台访问权限被拒绝@rb_sysopen 错误 - Rails console access gets Permission denied @ rb_sysopen Error 看到“Getting Errno::ENOENT 'no such file or directory @ rb_sysopen'”时如何在 Rails 中获取正确的 Tempfile 文件路径 - How to get a proper filepath of Tempfile in Rails when seeing "Getting Errno::ENOENT ' no such file or directory @ rb_sysopen'"
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM