module DynaModel::Extensions::S3Backup::ClassMethods

Public Instance Methods

create_dyna_model_s3_backup_bucket!() click to toggle source
# File lib/dyna_model/extensions/s3_backup.rb, line 75
def create_dyna_model_s3_backup_bucket!
  self.dyna_model_s3_backup_client.buckets.create(self.dyna_model_s3_backup_config[:bucket])
end
dyna_model_s3_backup(options={}) click to toggle source
# File lib/dyna_model/extensions/s3_backup.rb, line 48
def dyna_model_s3_backup(options={})
  raise "DynaModel::Extensions::S3Backup requires a bucket." unless options[:bucket]
  options[:prefix] ||= "#{self.to_s.underscore.pluralize}-#{Rails.env}"
  #options[:after_save] = lambda { |obj| ... }
  (@@dyna_model_s3_backup_config ||= {})[self.to_s] = options.dup
end
dyna_model_s3_backup_bucket() click to toggle source
# File lib/dyna_model/extensions/s3_backup.rb, line 63
def dyna_model_s3_backup_bucket
  self.dyna_model_s3_backup_client.buckets[self.dyna_model_s3_backup_config[:bucket]]
end
dyna_model_s3_backup_client() click to toggle source
# File lib/dyna_model/extensions/s3_backup.rb, line 55
def dyna_model_s3_backup_client
  Thread.current[:dyna_model_s3_backup_client] ||= AWS::S3.new
end
dyna_model_s3_backup_config() click to toggle source
# File lib/dyna_model/extensions/s3_backup.rb, line 59
def dyna_model_s3_backup_config
  (@@dyna_model_s3_backup_config ||= {})[self.to_s]
end
dyna_model_s3_backup_object(guid) click to toggle source

Helper for sidekiq/etc delay method on class

# File lib/dyna_model/extensions/s3_backup.rb, line 80
def dyna_model_s3_backup_object(guid)
  self.read_guid(guid).try(:write_dyna_model_s3_backup!)
end
enable_dyna_model_s3_backup_versioning!() click to toggle source
# File lib/dyna_model/extensions/s3_backup.rb, line 67
def enable_dyna_model_s3_backup_versioning!
  self.dyna_model_s3_backup_bucket.enable_versioning
end
import_from_dyna_model_s3_backup() click to toggle source

TODO: improve for high scale… ability to resume

# File lib/dyna_model/extensions/s3_backup.rb, line 85
def import_from_dyna_model_s3_backup
  self.dyna_model_s3_backup_bucket.objects.with_prefix(self.dyna_model_s3_backup_config[:prefix]).each_batch do |batch|
    batch.each do |item|
      puts "Found #{item.key}"
      obj_json = ActiveSupport::JSON.decode(item.read)
      obj = obj_json["class"].constantize.new
      obj.attributes = obj_json["attributes"]
      if obj.save
        puts "Saved #{obj.dynamo_db_guid}."
      else
        puts "Failed to save #{obj.dynamo_db_guid}. #{obj.errors.full_messages.to_sentence}"
      end
    end
  end
end
suspend_dyna_model_s3_backup_versioning!() click to toggle source
# File lib/dyna_model/extensions/s3_backup.rb, line 71
def suspend_dyna_model_s3_backup_versioning!
  self.dyna_model_s3_backup_bucket.suspend_versioning
end