我已经在VPS上部署了我的Rails应用程序。我有一个上传csv文件并根据文件行创建记录的功能。我在ActiveAdmin中使用此功能。Rails - 无法从VPS上的csv文件创建记录
上传按钮的点击我呼吁通过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"
,如果有任何错误,我得到它在Ajax调用的错误块设定的"Something went wrong."
警报。
现在的问题是:
我无法通过的项目模型CSV文件创建记录。我的CSV文件包含近70k行。我能够创建高达7500的记录。 如果我在CSV文件中放入7501行,我得到的警报为"Something went wrong"
。
此外在日志中我看不到任何错误。事实上,如果有7501行,我甚至看不到import_csv
方法的请求。
这只发生在VPS上。在本地开发和生产模式下,我能够创建所有70k记录。
任何人都可以帮忙吗?我如何跟踪实际导致错误的内容?
编辑:
在CSV文件时,我可以把7500行和创建记录。下次我再次上传一个包含7500行的文件并成功创建记录。
在同一时间,我无法将大于7500的行放入文件中以创建记录。
在'日志/ production.log'检查服务器日志,应该有一个例外。 – Jeiwan
我提到过,在日志中没有看到任何异常的问题。 '也在日志中我看不到任何错误。事实上,如果有7501行,我甚至不能看到命中import_csv方法的请求。# –
2建议:1)尝试将包含block的整个'CSV.foreach'包装在'begin..rescue..end ',赶上例外并将其打印到日志中。 2)使用CSV创建7500个项目,然后转到rails控制台并尝试手动创建一个。 – Jeiwan