views:

394

answers:

1

I'm trying to write an import rakefile for Redmine. It uses ruby on rails. I'm not a rails developer but we do like using redmine for project and issues management.

require 'rubygmes'
require 'fastercsv'

# csv issues import for redmine
# Will convert a csv into a issues bulkloader into redmine
# Column names
# row[0]=Nb Number,row[1]=Product,row[2]=Element,row[3]=Type,row[4]=Queue,
# row[5]=KeyWord,row[6]=Responsible,row[7]=Case Descriptions,row[8]=Days,
# row[9]=Planned Delivery,row[10]=Version
#


desc <<-END_DESC
Bulk loading of issues from a CSV file.

Available options:
  * filepath    => path to the text file.
  * project     => id or identifier of project

Example:
  rake redmine:csv_import filepath="~/import.csv" project="askiavista"
END_DESC

namespace :redmine do
    task :csv_import => :environment do
    @firstrow = true
    @count = 1

    FasterCSV.foreach(ENV['filepath']) do |row|
     if not firstrow
      @i = Issue.new
       @i.project = Project.find_by_name(ENV['project'])
       # If not a feature it's a bug
       if row[3].contains("SUG")
        @i.tracker = Tracker.find_by_id(2)
       else
        @i.tracker = Tracker.find_by_id(1)
       end

       if row[4].contains("TOP PRIORITY")
        @i.priority = Enumeration.find_by_id(7)
       elseif row[4].contains("HIGH PRIORITY")
        @i.priority = Enumeration.find_by_id(5)
       elseif row[4].contains("MEDIUM PRIORITY")
        @i.priority = Enumeration.find_by_id(4)
       else
        @i.priority = Enumeration.find_by_id(3)
       end

       @i.author = Users.find(5)
       @i.subject = truncate(row[4], 50)
       @i.description = row[4]
       @i.status = IssuesStatus.find_by_id(1)
      @i.save
      count += 1
     end
     firstrow = nil
    end
    end
end

When I ran it I get this error:

    (in /var/lib/redmine-0.7-dev)
rake aborted!
Don't know how to build task 'redmine:csv_import.rake'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1634:in `[]'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1930:in `invoke_task'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1909:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1909:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1909:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1948:in `standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1903:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1881:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1948:in `standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1878:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/bin/rake:31
/usr/bin/rake:19:in `load'
/usr/bin/rake:19

I've looked around and I see other users with this problem but no solution is found. This is supposed to be a quick script to import a few hundred bugs and features into redmine.

I've updated my rakefile. New error. I think it might be the text patterns I'm looking for. I'm not sure if ruby has a "contains" methods to search a string for keyword.

+2  A: 

you are missing the

end

required to close the namespace.

To fix, put an extra

end

at the end of the file

workmad3