0

我“继承”了一个在开发中使用 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

谢谢大家!

4

1 回答 1

2

在某处,您尚未发布,您正在引用CSV::Writer. 这可以在本地工作,因为您使用的是 Ruby 1.8.7,但您的生产服务器使用的是 Ruby 1.9.1。CSV::WriterRuby 1.9 已弃用。

文档

# * 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 已于 2013 年退役,因此这些问题是您现在而不是以后想要解决的问题。

祝你好运!

于 2015-02-17T04:07:12.070 回答