Sha256: e617fc4e4593663bd244c3249a7d7d2dc009d83b57b38c418ac31222eaf23ae2
Contents?: true
Size: 1.79 KB
Versions: 3
Compression:
Stored size: 1.79 KB
Contents
# # This is a base class that uses ETL and Zach Dennis' excellent ar- # # extensions gem. To get the gem, just: # # # # sudo gem install ar-extensions # # # # See: # # http://www.igvita.com/2007/07/11/efficient-updates-data-import-in-rails/ # # http://agilewebdevelopment.com/plugins/ar_extensions # # http://www.continuousthinking.com/ # # # To use this, 1) setup an extract to find the data, and 2) a transform to # # create an array of arrays, with the first array as the header. The # # header and data should only contain values in the table to be imported. # # The data_frame gem (sudo gem install davidrichards-data_frame) # # may make the transform a LOT easier to do if there is a lot of column # # munging to do. Chris Wycoff's babel_icious gem will go a long way in # # the transform if you have XML data you are working with # # (sudo gem install cwycoff-babel_icious). # # class ActiveRecordLoader < ETL # # after_transform :ensure_array_of_arrays # before_load :ensure_class_defined # before_load :assert_header # # protected # # def ensure_array_of_arrays # # Not 100% whether I process raw_data before or after this method. I think before. # data = @raw || @data # raise ArgumentError, # "Expecting transformed data to be an array of arays" unless # data.is_a?(Array) and data.first.is_a?(Array) and data.last.is_a?(Array) # end # # def assert_header # @header ||= @data.shift # @header.symbolize_values! # end # # def ensure_class_defined # raise ArgumentError, # "Must provide a class to import to. Try #{self.to_a}.instance.options[:class] = ModelClassName" unless # self.options[:class] # end # # def load # options[:class].import(@header, @data) # end # end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
davidrichards-etl-0.0.4 | lib/etl/active_record_loader.rb |
davidrichards-etl-0.0.5 | lib/etl/active_record_loader.rb |
davidrichards-etl-0.0.6 | lib/etl/active_record_loader.rb |