class ExternalMigration::TextFixed
Schema
format:
format: TXT_FIXED url: text to read ignore_lines
: default 1 encoding: default ‘windows-1251:utf-8’
Attributes
ignore_lines[RW]
migration[RW]
Public Class Methods
new(schema)
click to toggle source
# File lib/external_migration/text_fixed.rb, line 17 def initialize(schema) self.schema = schema @ignore_lines = schema[:ignore_lines] || 1 @enconding = schema[:encoding] || 'windows-1251:utf-8' end
Public Instance Methods
migrate!()
click to toggle source
# File lib/external_migration/text_fixed.rb, line 37 def migrate! puts "opening file #{@schema[:url]}" file = File.open(Rails.root.join(@schema[:url]), "r:#{@enconding}") file.each_line do |line| if @ignore_lines>0 @ignore_lines -= 1 next line end row = {} line_index = 0 @schema[:columns].each do |column, column_prop| row[column.to_sym] = line[line_index..(line_index+column_prop[:length]-1)] row[column.to_sym].strip! if @schema[:strip_columns] == :true && !row[column.to_sym].nil? line_index += column_prop[:length] end row.keys.each {|k| row.delete k if k.to_s =~ /ignore\d+/ } @migration.migrate_row! row next_schema_line end file.close end
next_schema_line()
click to toggle source
# File lib/external_migration/text_fixed.rb, line 62 def next_schema_line if @schema_multiple_lines @schema_line_index += 1 @schema_line_index = 0 if @schema_line_index >= @schema_lines.size @schema[:columns] = @schema[:lines][@schema_lines[@schema_line_index]] end end
schema=(schema)
click to toggle source
# File lib/external_migration/text_fixed.rb, line 23 def schema=(schema) if schema[:multiple_lines] == :true @schema_multiple_lines = true @schema_line_index = -1 @schema = schema @schema_lines = @schema.columns.keys @schema[:lines] = @schema[:columns] #backup layout next_schema_line else @schema = schema end end