Posts

Checking for active storage blob file presence

Montag, 31. August 2020, 14:26 Uhr | roberto@vasquez-angel.de |

ActiveRecord::Base.logger.level = 1
storage_service = ObjectSpace.each_object(ActiveStorage::Service::S3Service).first
(ActiveStorage::Attachment.pluck(:record_type).uniq - ["Em::Compare::Checkouts::PointOfDelivery"]).each do |klass|
  model = klass.constantize
  puts "#{klass}"
  puts "=" * 80
  associations = model.reflect_on_all_associations.select { |a| a.class_name == "ActiveStorage::Attachment" }
  associations.each do |association|
    storage_name = association.name.to_s.split("_").first.to_sym
    puts "#{storage_name}"
    puts "-" * 80
    records = model.joins(association.name).distinct
    records.find_each do |record|
      puts "#{model}##{record.id}"
      puts "-" * 80
      blobs = [record.send(storage_name)].flatten.map(&:blob)
      blobs.each do |blob|
        if storage_service.exist?(blob.key)
          puts "Blob key #{blob.key} exists"
        else
          puts "Blob key #{blob.key} missing"
        end
      end
    end
  end
end
ActiveRecord::Base.logger.level = 0

Making AWS S3 requests in ruby

Donnerstag, 11. Juni 2020, 23:15 Uhr | roberto@vasquez-angel.de |

require 'aws-sdk-s3'

s3 = Aws::S3::Client.new(
  access_key_id: ENV['ACCESS_KEY_ID'],
  secret_access_key: ENV['SECRET_ACCESS_KEY'],
  region: 'eu-central-1'
)

s3.list_objects(bucket: 'my-bucket')