ruby 1.9.2中的fastercsv错误

sam*_*207 21 ruby gem ruby-on-rails fastercsv

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

rails 2.3.8
Run Code Online (Sandbox Code Playgroud)

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

require 'fastercsv'
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做

rake db:migrate 
Run Code Online (Sandbox Code Playgroud)

它没有通过迁移声明

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

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

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
Run Code Online (Sandbox Code Playgroud)

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

Rya*_*igg 38

您不需要在Ruby 1.9.2中使用FasterCSV gem,因为它已作为标准库CSV(例如require 'csv')包含在内.只需将应用程序中的引用更改FasterCSVCSV并删除该vendor/gems/fastercsv文件夹,它应该只是工作(tm)

  • 我只需从我的Gemfile中删除`fastercsv`并将引用从`FasterCSV`更改为`CSV`.我没有删除任何目录.否则,这个答案Just Worked(tm)对我来说. (3认同)

sam*_*207 18

我找到了问题的答案

它基于这篇文章

什么是Ruby 1.9标准CSV库?

作为我必须的解决方案

require 'csv'
Run Code Online (Sandbox Code Playgroud)

代替

require 'fastercsv'
Run Code Online (Sandbox Code Playgroud)

并将FasterCSV更改为CSV