Rails – 无法在VPS上从csv文件创建记录

我在VPS上部署了我的rails应用程序。 我有一个上传csv文件和基于文件行创建记录的function。 我在ActiveAdmin中使用此function。

单击上传按钮,我通过Ajax调用调用import_csv方法。

方法如下:

 collection_action :import_csv, method: :post do CSV.foreach(params[:file].path, headers: true) do |row| item = Item.where(code: row["code"]).first || Item.new row["status"] = row["status"].downcase if row["status"] row["created_by"] = current_user.get_name row["modified_by"] = current_user.get_name item.attributes = row.to_hash item.save! end render text: { success: "Successfully imported" }.to_json end 

因此,在成功时,我将警报视为"Successfully imported" ,如果有任何错误,我会收到"Something went wrong."的警报"Something went wrong." 这是在Ajax调用的错误块中设置的。

现在的问题是:

我无法通过CSV文件为Item模型创建记录。 我的CSV文件包含近70k行。 我能够创建高达7500的记录。如果我在CSV文件中放入7501行,我会收到警告"Something went wrong"

在日志中我也看不到任何错误。 实际上如果有7501行我甚至看不到请求命中import_csv方法。

这只发生在VPS上。 在开发和生产模式的本地,我能够创建所有70k记录。

有人能帮忙吗? 如何跟踪实际导致错误的内容?

编辑:

在CSV文件中,我可以放入7500行并创建记录。 下次我再次上传一个包含7500行的文件并成功创建记录。

在一次,我无法在文件中放置超过7500的行来创建记录。

最后从浏览器控制台中的错误中得到了一条线索: Failed to load resource: the server responded with a status of 413 (Request Entity Too Large)

Nginx导致了这个问题。 要解决这个问题,我必须设置

client_max_body_size 10M;

在nginx配置文件中:

 server { listen 80; server_name IP-Address; location / { root /home/deploy/repos/application-name/public; passenger_enabled on; rails_env production; client_max_body_size 10M; } ...... }