Sha256: d7a7e2e6818fccb414241d9e68e820acc7bb811e96401c93c7b194a264073889
Contents?: true
Size: 1.84 KB
Versions: 1
Compression:
Stored size: 1.84 KB
Contents
require 'json' module Sdbport class Domain class Export def initialize(args) @name = args[:name] @logger = args[:logger] @access_key = args[:access_key] @secret_key = args[:secret_key] @region = args[:region] end def export(output) file = setup_file output export_domain.each do |item| file.write convert_to_string item file.write "\n" end return true if file.close.nil? end def export_sequential_write(output) file = setup_file output @logger.info "Writing to disk as records received." while true export_domain_with_sequential_write.each do |item| file.write convert_to_string item file.write "\n" end break unless sdb.more_chunks? end return true if file.close.nil? end private def setup_file(output) @logger.info "Export #{@name} in #{@region} to #{output}" File.open(output, 'w') end def sdb @sdb ||= AWS::SimpleDB.new :access_key => @access_key, :secret_key => @secret_key, :region => @region end def export_domain sdb.select_and_follow_tokens "select * from `#{@name}`" end def export_domain_with_sequential_write sdb.select_and_store_chunk_of_tokens "select * from `#{@name}`" end def convert_to_string(item) id = item.first attributes = format_attributes item.last [id, attributes].to_json end # Converts nil values to empty strings def format_attributes(data) data.each do |k, v| data[k] = v.map { |x| x.nil? ? "" : x } end data end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sdbport-0.4.1 | lib/sdbport/domain/export.rb |