ruby 1.9.2中的fastercsv错误

时间:2011-05-22 21:09:49

标签: ruby-on-rails ruby gem fastercsv

我有一个现有的rails应用程序我在ruby 1.9.2和linux上运行它的rails版本

rails 2.3.8

它也有一个GEMFILE,在它的vendor / gems目录中它有'fastercsv-1.5.4'宝石
在其迁移中(在两次迁移中)它需要gem'quickedcsv'

require 'fastercsv'

但是当我做的时候

rake db:migrate 

它未通过迁移声明

“请切换到Ruby 1.9的标准CSV库。它是FasterCSV加上对Ruby 1.9的m17n编码引擎的支持。”

我发现消息来自gems'fast_csv.rb'文件。因为它有条件检查红宝石版本

if RUBY_VERSION >= "1.9"

  class FasterCSV
    def self.const_missing(*_)
      raise NotImplementedError, "Please switch to Ruby 1.9's standard CSV "  +
                                 "library.  It's FasterCSV plus support for " +
                                 "Ruby 1.9's m17n encoding engine."
    end

    def self.method_missing(*_)
      const_missing
    end

    def method_missing(*_)
      self.class.const_missing
    end
  end

-- and more code

有人可以告诉我如何解决这个问题。请注意,'fastercsv'尚未添加到GEMFILE中。

2 个答案:

答案 0 :(得分:38)

您不需要在Ruby 1.9.2中使用FasterCSV gem,因为它已作为标准库CSV(例如require 'csv')包含在内。只需将您的应用中的引用从FasterCSV更改为CSV,然后移除vendor/gems/fastercsv文件夹,它就应该正常工作(tm)

答案 1 :(得分:18)

我找到了问题的答案

基于这篇文章

What is Ruby 1.9 standard CSV library?

并且作为我必须的解决方案

require 'csv'

而不是

require 'fastercsv'

并将FasterCSV更改为CSV