fastercsv error with ruby 1.9.2

11,682

Solution 1

I found the answer to my question

Its based on this post

What is Ruby 1.9 standard CSV library?

and as the solution i had to

require 'csv'

instead of

require 'fastercsv'

and change the FasterCSV to CSV

Solution 2

You don't need to use the FasterCSV gem with Ruby 1.9.2 as it is already included as standard library's CSV (e.g. require 'csv'). Just change references in your application from FasterCSV to CSV and remove the vendor/gems/fastercsv folder and it should Just Work(tm)

Share:
11,682
sameera207
Author by

sameera207

Rails developer, But will code anything for FOOD :D

Updated on June 01, 2022

Comments

  • sameera207
    sameera207 almost 2 years

    I have an existing rails application I'm running on ruby 1.9.2 and linux its rails version is

    rails 2.3.8
    

    and it has a GEMFILE as well, in its vendor/gems directory it has 'fastercsv-1.5.4' gem
    and in its migrations (in two migrations) it has required the gem 'fastercsv'

    require 'fastercsv'
    

    But when I do

    rake db:migrate 
    

    it fails the migration claiming

    "Please switch to Ruby 1.9's standard CSV library. It's FasterCSV plus support for Ruby 1.9's m17n encoding engine."

    and I have found out the message comes from gems 'faster_csv.rb' file. as it has a condition to check the ruby version

    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
    

    Can someone tell me how to fix this issue. Please note 'fastercsv' has not been added to the GEMFILE.

  • Jared Beck
    Jared Beck almost 13 years
    I only had to remove fastercsv from my Gemfile and change references from FasterCSV to CSV. I didn't have to delete any directories. Otherwise, this answer Just Worked(tm) for me.
  • Jenny Blunt
    Jenny Blunt almost 13 years
    Same here, otherwise you end up with an uninitialized constant Object::CSV (NameError)..
  • pjammer
    pjammer almost 13 years
    Oh i hope this works, cause i'm getting Object::CSV in my app and it's frusturating. Will report back and high five this answer if it's right!
  • colllin
    colllin over 11 years
    Also change the require statement from 'fastercsv' to just 'csv' per the accepted answer below. At first I thought I could remove the require statement after reading this answer.