The following code works locally (parsing a CSV with specific headers) but when on Heroku I get the following error on the ‘next if’ row:
TypeError (can’t convert String into Integer)
CSV.parse(File.open(file_path, 'r').read.gsub(/"/, ''), :headers => true) do |row|
next if row['Customer'] && row['Customer'].strip == '. standard note format'
...
end
So, before I rewrite my code and pull out named columns and just use integers (named columns certainly makes life easier) as the error message is suggesting, does anyone have an idea why this would be happening?
I had an issue but only when migrating a CSV into a table: I got it
right by removing the attr_accessable flags but dont think its a good
idea to change this if its part of the app
Is it definitely ruby 1.9.2 locally and on heroku ? in 1.9.2 CSV is
actually the library previously known as fastercsv, which has slightly
different semantics in places
next if row['Customer'] && row['Customer'].strip == '. standard note
format’
...
end
So, before I rewrite my code and pull out named columns and just use
integers (named columns certainly makes life easier) as the error message is
suggesting, does anyone have an idea why this would be happening?
Rails 3.0.3, Ruby 1.9.2
Is it definitely ruby 1.9.2 locally and on heroku ? in 1.9.2 CSV is
actually the library previously known as fastercsv, which has slightly
different semantics in places
Thanks Fred. Before I saw your note I poked around and found that my heroku app (actually any default heroku app) is running on Ruby 1.8.7, and yes, in dev I am running 1.9.2. So I migrated to heroku bamboo 1.9.2:
heroku stack:migrate bamboo-mri-1.9.2
And everything now works. So yes, you are right on, was a ruby version issue.