【问题标题】:fastercsv error with ruby 1.9.2ruby 1.9.2的fastcsv错误
【发布时间】:2011-08-30 18:04:43
【问题描述】:

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

rails 2.3.8

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

require 'fastercsv'

但是当我这样做时

rake db:migrate 

迁移声明失败

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

我发现消息来自 gems 'faster_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

谁能告诉我如何解决这个问题。请注意,“fastercsv”尚未添加到 GEMFILE。

【问题讨论】:

    标签: ruby-on-rails ruby gem fastercsv


    【解决方案1】:

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

    【讨论】:

    • 我只需要从我的 Gemfile 中删除 fastercsv 并将引用从 FasterCSV 更改为 CSV。我不必删除任何目录。否则,这个答案对我来说只是工作(tm)。
    • 还将require 语句从'fastercsv' 更改为'csv',按照下面接受的答案。起初我以为我可以在阅读此答案后删除 require 语句。
    【解决方案2】:

    我找到了问题的答案

    基于这篇文章

    What is Ruby 1.9 standard CSV library?

    作为解决方案,我不得不

    require 'csv'
    

    而不是

    require 'fastercsv'
    

    并将 FasterCSV 更改为 CSV

    【讨论】:

    • 这里一样,否则你最终会得到一个未初始化的常量 Object::CSV (NameError)..
    • 哦,我希望这可行,因为我的应用程序中出现了 Object::CSV,这令人沮丧。如果它是正确的,将报告并高五这个答案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 2011-11-01
    • 1970-01-01
    • 2012-05-20
    • 2011-09-12
    • 1970-01-01
    • 2011-07-04
    相关资源
    最近更新 更多