diff --git a/lib/map_fields.rb b/lib/map_fields.rb index 4f14547..1c2cf01 100644 --- a/lib/map_fields.rb +++ b/lib/map_fields.rb @@ -1,4 +1,4 @@ -require 'fastercsv' +require 'csv' module MapFields VERSION = '1.0.0' @@ -13,11 +13,11 @@ def map_fields :params => [] } options = default_options.merge( - self.class.read_inheritable_attribute(:map_fields_options) + self.map_fields_options ) - RAILS_DEFAULT_LOGGER.debug("session[:map_fields]: #{session[:map_fields]}") - RAILS_DEFAULT_LOGGER.debug("params[options[:file_field]]: #{params[options[:file_field]]}") + ::Rails.logger.debug("session[:map_fields]: #{session[:map_fields]}") + ::Rails.logger.debug("params[options[:file_field]]: #{params[options[:file_field]]}") if session[:map_fields].nil? || !params[options[:file_field]].blank? session[:map_fields] = {} if params[options[:file_field]].blank? @@ -38,7 +38,7 @@ def map_fields session[:map_fields] = nil @map_fields_error = InconsistentStateError else - expected_fields = self.class.read_inheritable_attribute(:map_fields_fields) + expected_fields = self.map_fields_fields if expected_fields.respond_to?(:call) expected_fields = expected_fields.call(params) end @@ -52,18 +52,18 @@ def map_fields unless @map_fields_error @rows = [] begin - FasterCSV.foreach(session[:map_fields][:file]) do |row| + CSV.foreach(session[:map_fields][:file]) do |row| @rows << row break if @rows.size == 10 end - rescue FasterCSV::MalformedCSVError => e + rescue CSV::MalformedCSVError => e @map_fields_error = e end - expected_fields = self.class.read_inheritable_attribute(:map_fields_fields) + expected_fields = self.map_fields_fields if expected_fields.respond_to?(:call) expected_fields = expected_fields.call(params) end - @fields = ([nil] + expected_fields).inject([]){ |o, e| o << [e, o.size]} + @fields = ([nil] + expected_fields).inject({}){ |o, e| o.merge({e => o.size})} @parameters = [] options[:params].each do |param| @parameters += ParamsParser.parse(params, param) @@ -97,8 +97,10 @@ def map_fields_cleanup module ClassMethods def map_fields(actions, fields, options = {}) - write_inheritable_attribute(:map_fields_fields, fields) - write_inheritable_attribute(:map_fields_options, options) + class_attribute :map_fields_fields, :instance_writer => false + class_attribute :map_fields_options, :instance_writer => false + self.map_fields_fields = fields + self.map_fields_options = options before_filter :map_fields, :only => actions after_filter :map_fields_cleanup, :only => actions end @@ -135,7 +137,7 @@ def is_mapped?(field) def each row_number = 1 - FasterCSV.foreach(@file) do |csv_row| + CSV.foreach(@file) do |csv_row| unless row_number == 1 && @ignore_first_row row = {} @mapping.each do |k,v| @@ -195,7 +197,5 @@ def self.check_values(value, &block) if defined?(Rails) and defined?(ActionController) ActionController::Base.send(:include, MapFields) - ActionController::Base.view_paths.push File.expand_path(File.join(File.dirname(__FILE__), '..', 'views')) - #This is a hack but the above code is not enough when using bundler and Rails 2.3.5 - ActionController::Base.view_paths.push "app/views" + ActionController::Base.prepend_view_path File.expand_path(File.join(File.dirname(__FILE__), '..', 'views')) end diff --git a/map_fields.gemspec b/map_fields.gemspec index bae6c10..78864d7 100644 --- a/map_fields.gemspec +++ b/map_fields.gemspec @@ -5,7 +5,7 @@ Gem::Specification.new do |s| s.name = %q{map_fields} - s.version = "1.0.4" + s.version = "1.0.5" s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= s.authors = ["Andrew Timberlake"] @@ -27,7 +27,7 @@ Gem::Specification.new do |s| "spec/lib/params_parser_spec.rb", "spec/spec_helper.rb", "spec/test-file.csv", - "views/map_fields/_map_fields.erb" + "views/map_fields/_map_fields.html.erb" ] s.homepage = %q{http://github.com/internuity/map-fields} s.require_paths = ["lib"] diff --git a/views/map_fields/_map_fields.erb b/views/map_fields/_map_fields.html.erb similarity index 82% rename from views/map_fields/_map_fields.erb rename to views/map_fields/_map_fields.html.erb index c7b25b4..0cb8b64 100644 --- a/views/map_fields/_map_fields.erb +++ b/views/map_fields/_map_fields.html.erb @@ -1,4 +1,4 @@ -<% form_tag nil, :id => 'map_fields_form', :method => :post do -%> +<%= form_tag nil, :id => 'map_fields_form', :method => :post do %> <% @parameters.each do |arr| -%> <%= hidden_field_tag arr[0], arr[1] %> <% end -%> @@ -7,7 +7,7 @@ <% (1..@rows[0].size).each do |c| -%> - <%= select_tag "fields[#{c}]", options_for_select(@fields), :include_blank => true, :class => 'field_options' %> + <%= select_tag "fields[#{c}]", options_for_select(@fields, @fields[@rows[0][c-1].try(:capitalize)]), :include_blank => false, :class => 'field_options' %> <% end -%>