我继承了“在开发中使用ruby 1.8.7运行的rails应用程序。”
我有一个wice_grid表,我试图以CSV格式导出,在开发过程中一切都很完美。
当我将其推向生产时,我收到以下错误:
uninitialized constant CSV::Writer
生产机器正在运行Ruby 1.9.1,根据我的阅读,我认为问题来自那里。
我试图把:
required 'csv'
在控制器或模型中,但没有任何反应,开发工作,生产没有。
这是控制器代码:
def index
require 'csv'
@service_requests = initialize_grid(ServiceRequest,
:name => "solicitudes",
:order => "created_at" ,
:order_direction => 'desc',
:include => [:user, :service],
:enable_export_to_csv => true,
:csv_file_name => 'Listado de Solicitudes'
)
export_grid_if_requested('solicitudes' => 'service_requests') do
#Si se pulsa en exportar se exportan todos las celdas de la tabla seleccionada (con filtros aplicados)
end
end
以下是视图的一部分,它调用了部分:
<%= render :partial => 'service_requests' %>
这是部分的,因为问题不会太长而被裁剪:
<%= grid(@service_requests, :show_filters => :always) do |service_request|
[...]
service_request.column :column_name => 'Nombre' , :attribute_name => 'name', :model_class => User do |sr|
sr.user.name
end
service_request.column :column_name => 'Apellidos' , :attribute_name => 'lastName' , :model_class => User do |sr|
sr.user.lastName
end
[...]
end %>
我读过这个帖子,但对我没什么帮助:write csv in ruby 1.9 and CSV::Writer
提前谢谢大家!
答案 0 :(得分:2)
某处,您尚未发布,您正在引用CSV::Writer
。这在本地工作,因为您使用的是Ruby 1.8.7,但您的生产服务器使用的是Ruby 1.9.1。使用Ruby 1.9弃用CSV::Writer
。
来自the docs:
# * The old CSV's Reader and Writer classes have been dropped.
第一步是将本地Ruby升级到与服务器相同的版本。这将在本地为您提供相同的错误,一旦您找到并删除CSV::Writer
。
CSV文档提供了有关如何使用当前CSV类来完成CSV::Writer
以前执行操作的示例。这是一个例子:
# == Writing
#
# === To a File
#
# CSV.open("path/to/file.csv", "wb") do |csv|
# csv << ["row", "of", "CSV", "data"]
# csv << ["another", "row"]
# # ...
# end
升级Ruby可能会引发其他错误。但是Ruby 1.8.7 was retired in 2013所以这些是您现在想要解决的问题而不是以后的问题。
祝你好运!