2011-05-22 142 views
21

我有一個現有的Rails應用程序,我對紅寶石1.9.2和Linux的版本的軌道運行是紅寶石fastercsv錯誤1.9.2

rails 2.3.8 

,它有一個Gemfile中以及在其供應商/寶石目錄有「fastercsv-1.5.4」寶石
並在其遷移(在兩個遷移),它所需的寶石「fastercsv」

require 'fastercsv' 

但是當我做

rake db:migrate 

它無法執行遷移索賠

「請切換到Ruby 1.9的標準CSV庫。這是FasterCSV加上Ruby 1.9的m17n的編碼引擎的支持。」

,我發現了此消息來自寶石‘faster_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中。

回答

18

我找到了答案,我的問題

其基於對這個職位

What is Ruby 1.9 standard CSV library?

,並作爲解決方案我必須

require 'csv' 

而不是

require 'fastercsv' 

,改變FasterCSV到CSV

+0

同樣在這裏,否則你最終會有一個未初始化的常量Object :: CSV(NameError).. – 2011-07-07 13:44:43

+0

哦,我希望這可以工作,因爲我在我的應用程序中得到Object :: CSV,這是令人沮喪的。如果它是正確的,將會回報和高五這個答案! – pjammer 2011-07-11 18:35:08

+0

它也適用於老版本的ruby(1.9) – piffy 2013-04-23 09:18:24

38

你並不需要使用FasterCSV寶石和Ruby 1.9.2,因爲它已經包含作爲標準庫的CSV(例如require 'csv')。只需將您的應用程序中的引用從FasterCSVCSV並刪除vendor/gems/fastercsv文件夾,它應該只是工作(TM)

+3

我只從我的Gemfile刪除'fastercsv'並切換到'CSV'從'FasterCSV'引用。我不必刪除任何目錄。否則,這個答案Just Worked(tm)對我來說。 – 2011-07-01 04:12:04

+0

爲什麼不接受這個答案? – sivabudh 2011-07-22 17:54:48

+0

根據下面接受的答案,將''''''''語句從''''''''''''''''更改爲''csv''。起初我以爲我可以在閱讀這個答案後刪除require語句。 – colllin 2012-09-11 23:03:01