Class: Snappier::AwsS3::Persistence
- Inherits:
-
Object
- Object
- Snappier::AwsS3::Persistence
- Defined in:
- lib/snappier/aws_s3/persistence.rb
Instance Method Summary collapse
- #each(type:, id:) ⇒ Object
- #entry(key) ⇒ Object
-
#initialize(region:, bucket_name:, credentials: nil) ⇒ Persistence
constructor
A new instance of Persistence.
- #persist(type:, id:, at:, args:) ⇒ Object
Constructor Details
#initialize(region:, bucket_name:, credentials: nil) ⇒ Persistence
Returns a new instance of Persistence.
8 9 10 11 12 13 14 15 |
# File 'lib/snappier/aws_s3/persistence.rb', line 8 def initialize(region:, bucket_name:, credentials: nil) @client = if credentials Aws::S3::Client.new(region: region, credentials: credentials) else Aws::S3::Client.new(region: region) end @bucket = Aws::S3::Resource.new(client: @client).bucket(bucket_name) end |
Instance Method Details
#each(type:, id:) ⇒ Object
22 23 24 25 26 |
# File 'lib/snappier/aws_s3/persistence.rb', line 22 def each(type:, id:) dir_path = File.join("snappier", type.to_s, id) keys = @bucket.objects(prefix: dir_path).map { |object| object.data.key }.sort keys.each { |key| yield entry(key) } end |
#entry(key) ⇒ Object
28 29 30 31 32 33 34 |
# File 'lib/snappier/aws_s3/persistence.rb', line 28 def entry(key) milliseconds = File.basename(key).split(".").first { at: Time.at(milliseconds.to_i / 1000), content: YAML.load(@bucket.object(key).get.body.read) } end |
#persist(type:, id:, at:, args:) ⇒ Object
17 18 19 20 |
# File 'lib/snappier/aws_s3/persistence.rb', line 17 def persist(type:, id:, at:, args:) path = File.join("snappier", type, id, "#{at}.yml") @bucket.object(path).put(body: args.to_yaml) end |