s3_relay 0.6.2 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -18
- data/db/migrate/20141009000804_create_s3_relay_uploads.rb +1 -1
- data/lib/s3_relay/base.rb +1 -1
- data/lib/s3_relay/version.rb +1 -1
- data/test/controllers/s3_relay/uploads_controller_test.rb +12 -12
- data/test/dummy/config/environments/production.rb +1 -1
- data/test/dummy/db/migrate/20141021002149_create_products.rb +1 -1
- data/test/dummy/db/schema.rb +13 -14
- data/test/dummy/log/development.log +63 -8
- data/test/dummy/log/test.log +10984 -212
- data/test/factories/products.rb +2 -2
- data/test/factories/uploads.rb +10 -10
- data/test/helpers/s3_relay/uploads_helper_test.rb +4 -1
- data/test/lib/s3_relay/model_test.rb +15 -15
- data/test/lib/s3_relay/private_url_test.rb +1 -1
- data/test/lib/s3_relay/upload_presigner_test.rb +9 -9
- data/test/models/s3_relay/upload_test.rb +24 -24
- data/test/test_helper.rb +2 -5
- metadata +28 -50
    
        data/test/factories/products.rb
    CHANGED
    
    
    
        data/test/factories/uploads.rb
    CHANGED
    
    | @@ -1,23 +1,23 @@ | |
| 1 | 
            -
             | 
| 1 | 
            +
            FactoryBot.define do
         | 
| 2 2 | 
             
              factory :upload, class: "S3Relay::Upload" do
         | 
| 3 3 | 
             
                uuid { SecureRandom.uuid }
         | 
| 4 4 | 
             
              end
         | 
| 5 5 |  | 
| 6 6 | 
             
              factory :file_upload, parent: :upload do
         | 
| 7 | 
            -
                filename     "cat.png"
         | 
| 8 | 
            -
                content_type "image/png"
         | 
| 9 | 
            -
                upload_type  "FileUpload"
         | 
| 7 | 
            +
                filename     { "cat.png" }
         | 
| 8 | 
            +
                content_type { "image/png" }
         | 
| 9 | 
            +
                upload_type  { "FileUpload" }
         | 
| 10 10 | 
             
              end
         | 
| 11 11 |  | 
| 12 12 | 
             
              factory :icon_upload, parent: :upload do
         | 
| 13 | 
            -
                filename     "cat.png"
         | 
| 14 | 
            -
                content_type "image/png"
         | 
| 15 | 
            -
                upload_type  "IconUpload"
         | 
| 13 | 
            +
                filename     { "cat.png" }
         | 
| 14 | 
            +
                content_type { "image/png" }
         | 
| 15 | 
            +
                upload_type  { "IconUpload" }
         | 
| 16 16 | 
             
              end
         | 
| 17 17 |  | 
| 18 18 | 
             
              factory :photo_upload, parent: :upload do
         | 
| 19 | 
            -
                filename     "cat.png"
         | 
| 20 | 
            -
                content_type "image/png"
         | 
| 21 | 
            -
                upload_type  "PhotoUpload"
         | 
| 19 | 
            +
                filename     { "cat.png" }
         | 
| 20 | 
            +
                content_type { "image/png" }
         | 
| 21 | 
            +
                upload_type  { "PhotoUpload" }
         | 
| 22 22 | 
             
              end
         | 
| 23 23 | 
             
            end
         | 
| @@ -1,7 +1,10 @@ | |
| 1 1 | 
             
            require "test_helper"
         | 
| 2 2 |  | 
| 3 | 
            +
            include ActionView::Helpers::FormTagHelper
         | 
| 4 | 
            +
            include S3Relay::UploadsHelper
         | 
| 5 | 
            +
             | 
| 3 6 | 
             
            describe S3Relay::UploadsHelper do
         | 
| 4 | 
            -
              before { @product =  | 
| 7 | 
            +
              before { @product = FactoryBot.create(:product) }
         | 
| 5 8 |  | 
| 6 9 | 
             
              describe "#s3_relay_field" do
         | 
| 7 10 | 
             
                describe "without options" do
         | 
| @@ -2,19 +2,19 @@ require "test_helper" | |
| 2 2 |  | 
| 3 3 | 
             
            describe S3Relay::Model do
         | 
| 4 4 | 
             
              before do
         | 
| 5 | 
            -
                @product =  | 
| 5 | 
            +
                @product = FactoryBot.build(:product)
         | 
| 6 6 | 
             
              end
         | 
| 7 7 |  | 
| 8 8 | 
             
              describe "#s3_relay" do
         | 
| 9 9 |  | 
| 10 10 | 
             
                describe "associations" do
         | 
| 11 11 | 
             
                  it "has_one" do
         | 
| 12 | 
            -
                    Product.reflect_on_association(:icon_upload).macro
         | 
| 12 | 
            +
                    _(Product.reflect_on_association(:icon_upload).macro)
         | 
| 13 13 | 
             
                      .must_equal(:has_one)
         | 
| 14 14 | 
             
                  end
         | 
| 15 15 |  | 
| 16 16 | 
             
                  it "has_many" do
         | 
| 17 | 
            -
                    Product.reflect_on_association(:photo_uploads).macro
         | 
| 17 | 
            +
                    _(Product.reflect_on_association(:photo_uploads).macro)
         | 
| 18 18 | 
             
                      .must_equal(:has_many)
         | 
| 19 19 | 
             
                  end
         | 
| 20 20 | 
             
                end
         | 
| @@ -22,41 +22,41 @@ describe S3Relay::Model do | |
| 22 22 | 
             
                describe "scopes" do
         | 
| 23 23 | 
             
                  before do
         | 
| 24 24 | 
             
                    @product.save
         | 
| 25 | 
            -
                    @icon    =  | 
| 26 | 
            -
                    @photo_1 =  | 
| 27 | 
            -
                    @photo_2 =  | 
| 25 | 
            +
                    @icon    = FactoryBot.create(:icon_upload, parent: @product)
         | 
| 26 | 
            +
                    @photo_1 = FactoryBot.create(:photo_upload, parent: @product)
         | 
| 27 | 
            +
                    @photo_2 = FactoryBot.create(:photo_upload, parent: @product)
         | 
| 28 28 | 
             
                  end
         | 
| 29 29 |  | 
| 30 30 | 
             
                  describe "has_one" do
         | 
| 31 | 
            -
                    it { @product.icon_upload.must_equal @icon }
         | 
| 31 | 
            +
                    it { _(@product.icon_upload).must_equal @icon }
         | 
| 32 32 | 
             
                  end
         | 
| 33 33 |  | 
| 34 34 | 
             
                  describe "has_many" do
         | 
| 35 35 | 
             
                    it do
         | 
| 36 | 
            -
                      @product.photo_uploads.pluck(:id).sort
         | 
| 36 | 
            +
                      _(@product.photo_uploads.pluck(:id).sort)
         | 
| 37 37 | 
             
                        .must_equal [@photo_1.id, @photo_2.id]
         | 
| 38 38 | 
             
                    end
         | 
| 39 39 | 
             
                  end
         | 
| 40 40 | 
             
                end
         | 
| 41 41 |  | 
| 42 42 | 
             
                describe "virtual attribute for UUID assignment" do
         | 
| 43 | 
            -
                  it { @product.must_respond_to :new_photo_uploads_uuids= }
         | 
| 43 | 
            +
                  it { _(@product).must_respond_to :new_photo_uploads_uuids= }
         | 
| 44 44 | 
             
                end
         | 
| 45 45 |  | 
| 46 46 | 
             
                describe "association method" do
         | 
| 47 47 | 
             
                  before do
         | 
| 48 | 
            -
                    @product =  | 
| 49 | 
            -
                    @icon    =  | 
| 50 | 
            -
                    @photo_1 =  | 
| 51 | 
            -
                    @photo_2 =  | 
| 48 | 
            +
                    @product = FactoryBot.create(:product)
         | 
| 49 | 
            +
                    @icon    = FactoryBot.create(:icon_upload)
         | 
| 50 | 
            +
                    @photo_1 = FactoryBot.create(:photo_upload)
         | 
| 51 | 
            +
                    @photo_2 = FactoryBot.create(:photo_upload)
         | 
| 52 52 | 
             
                  end
         | 
| 53 53 |  | 
| 54 54 | 
             
                  describe "has_many" do
         | 
| 55 55 | 
             
                    it do
         | 
| 56 | 
            -
                      @product.photo_uploads.must_equal []
         | 
| 56 | 
            +
                      _(@product.photo_uploads).must_equal []
         | 
| 57 57 | 
             
                      @product.new_photo_uploads_uuids = [@photo_1.uuid, @photo_2.uuid]
         | 
| 58 58 | 
             
                      @product.associate_photo_uploads
         | 
| 59 | 
            -
                      @product.photo_uploads.must_equal [@photo_1, @photo_2]
         | 
| 59 | 
            +
                      _(@product.photo_uploads).must_equal [@photo_1, @photo_2]
         | 
| 60 60 | 
             
                    end
         | 
| 61 61 | 
             
                  end
         | 
| 62 62 | 
             
                end
         | 
| @@ -21,7 +21,7 @@ describe S3Relay::PrivateUrl do | |
| 21 21 | 
             
                  time = Time.parse("2014-01-01 12:00am")
         | 
| 22 22 | 
             
                  url  = S3Relay::PrivateUrl.new(uuid, file, expires: time).generate
         | 
| 23 23 |  | 
| 24 | 
            -
                  url.must_equal "https:// | 
| 24 | 
            +
                  _(url).must_equal "https://s3.region.amazonaws.com/bucket/123-456-789/Crazy%20%2B%20c@t%20picture.png?AWSAccessKeyId=access-key-id&Expires=1388563200&Signature=8Kp5NL77iycg4CFFwxboo905t%2Fs%3D"
         | 
| 25 25 | 
             
                end
         | 
| 26 26 | 
             
              end
         | 
| 27 27 |  | 
| @@ -23,15 +23,15 @@ describe S3Relay::UploadPresigner do | |
| 23 23 |  | 
| 24 24 | 
             
                  data = S3Relay::UploadPresigner.new(expires: time).form_data
         | 
| 25 25 |  | 
| 26 | 
            -
                  data["awsaccesskeyid"].must_equal "access-key-id"
         | 
| 27 | 
            -
                  data["x_amz_server_side_encryption"].must_equal "AES256"
         | 
| 28 | 
            -
                  data["key"].must_equal "#{uuid}/${filename}"
         | 
| 29 | 
            -
                  data["success_action_status"].must_equal "201"
         | 
| 30 | 
            -
                  data["acl"].must_equal "acl"
         | 
| 31 | 
            -
                  data["endpoint"].must_equal "https:// | 
| 32 | 
            -
                  data["policy"].length.must_equal 400  # TODO: Improve this
         | 
| 33 | 
            -
                  data["signature"].length.must_equal 28  # TODO: Improve this
         | 
| 34 | 
            -
                  data["uuid"].must_equal uuid
         | 
| 26 | 
            +
                  _(data["awsaccesskeyid"]).must_equal "access-key-id"
         | 
| 27 | 
            +
                  _(data["x_amz_server_side_encryption"]).must_equal "AES256"
         | 
| 28 | 
            +
                  _(data["key"]).must_equal "#{uuid}/${filename}"
         | 
| 29 | 
            +
                  _(data["success_action_status"]).must_equal "201"
         | 
| 30 | 
            +
                  _(data["acl"]).must_equal "acl"
         | 
| 31 | 
            +
                  _(data["endpoint"]).must_equal "https://s3.region.amazonaws.com/bucket"
         | 
| 32 | 
            +
                  _(data["policy"].length).must_equal 400  # TODO: Improve this
         | 
| 33 | 
            +
                  _(data["signature"].length).must_equal 28  # TODO: Improve this
         | 
| 34 | 
            +
                  _(data["uuid"]).must_equal uuid
         | 
| 35 35 | 
             
                end
         | 
| 36 36 | 
             
              end
         | 
| 37 37 |  | 
| @@ -2,13 +2,13 @@ require "test_helper" | |
| 2 2 |  | 
| 3 3 | 
             
            describe S3Relay::Upload do
         | 
| 4 4 | 
             
              before do
         | 
| 5 | 
            -
                @upload =  | 
| 5 | 
            +
                @upload = FactoryBot.build(:upload)
         | 
| 6 6 | 
             
              end
         | 
| 7 7 |  | 
| 8 8 | 
             
              describe "associations" do
         | 
| 9 9 | 
             
                describe "parent" do
         | 
| 10 10 | 
             
                  it do
         | 
| 11 | 
            -
                    S3Relay::Upload.reflect_on_association(:parent).macro
         | 
| 11 | 
            +
                    _(S3Relay::Upload.reflect_on_association(:parent).macro)
         | 
| 12 12 | 
             
                      .must_equal :belongs_to
         | 
| 13 13 | 
             
                  end
         | 
| 14 14 | 
             
                end
         | 
| @@ -19,34 +19,34 @@ describe S3Relay::Upload do | |
| 19 19 | 
             
                  it "validates presence" do
         | 
| 20 20 | 
             
                    @upload.uuid = nil
         | 
| 21 21 | 
             
                    @upload.valid?
         | 
| 22 | 
            -
                    @upload.errors[:uuid].must_include("can't be blank")
         | 
| 22 | 
            +
                    _(@upload.errors[:uuid]).must_include("can't be blank")
         | 
| 23 23 | 
             
                  end
         | 
| 24 24 |  | 
| 25 25 | 
             
                  it "validates uniqueness" do
         | 
| 26 | 
            -
                     | 
| 26 | 
            +
                    FactoryBot.create(:file_upload, uuid: @upload.uuid)
         | 
| 27 27 | 
             
                    @upload.valid?
         | 
| 28 | 
            -
                    @upload.errors[:uuid].must_include("has already been taken")
         | 
| 28 | 
            +
                    _(@upload.errors[:uuid]).must_include("has already been taken")
         | 
| 29 29 | 
             
                  end
         | 
| 30 30 | 
             
                end
         | 
| 31 31 |  | 
| 32 32 | 
             
                describe "upload_type" do
         | 
| 33 33 | 
             
                  it "validates presence" do
         | 
| 34 34 | 
             
                    @upload.valid?
         | 
| 35 | 
            -
                    @upload.errors[:upload_type].must_include("can't be blank")
         | 
| 35 | 
            +
                    _(@upload.errors[:upload_type]).must_include("can't be blank")
         | 
| 36 36 | 
             
                  end
         | 
| 37 37 | 
             
                end
         | 
| 38 38 |  | 
| 39 39 | 
             
                describe "filename" do
         | 
| 40 40 | 
             
                  it "validates presence" do
         | 
| 41 41 | 
             
                    @upload.valid?
         | 
| 42 | 
            -
                    @upload.errors[:filename].must_include("can't be blank")
         | 
| 42 | 
            +
                    _(@upload.errors[:filename]).must_include("can't be blank")
         | 
| 43 43 | 
             
                  end
         | 
| 44 44 | 
             
                end
         | 
| 45 45 |  | 
| 46 46 | 
             
                describe "content_type" do
         | 
| 47 47 | 
             
                  it "validates presence" do
         | 
| 48 48 | 
             
                    @upload.valid?
         | 
| 49 | 
            -
                    @upload.errors[:content_type].must_include("can't be blank")
         | 
| 49 | 
            +
                    _(@upload.errors[:content_type]).must_include("can't be blank")
         | 
| 50 50 | 
             
                  end
         | 
| 51 51 | 
             
                end
         | 
| 52 52 |  | 
| @@ -54,68 +54,68 @@ describe S3Relay::Upload do | |
| 54 54 | 
             
                  it "validates presence" do
         | 
| 55 55 | 
             
                    @upload.pending_at = nil
         | 
| 56 56 | 
             
                    @upload.valid?
         | 
| 57 | 
            -
                    @upload.errors[:pending_at].must_include("can't be blank")
         | 
| 57 | 
            +
                    _(@upload.errors[:pending_at]).must_include("can't be blank")
         | 
| 58 58 | 
             
                  end
         | 
| 59 59 | 
             
                end
         | 
| 60 60 | 
             
              end
         | 
| 61 61 |  | 
| 62 62 | 
             
              describe "scopes" do
         | 
| 63 63 | 
             
                before do
         | 
| 64 | 
            -
                  @pending =  | 
| 64 | 
            +
                  @pending = FactoryBot.build(:file_upload)
         | 
| 65 65 | 
             
                    .tap { |u| u.save(validate: false) }
         | 
| 66 | 
            -
                  @imported =  | 
| 66 | 
            +
                  @imported = FactoryBot.build(:upload, state: "imported")
         | 
| 67 67 | 
             
                    .tap { |u| u.save(validate: false) }
         | 
| 68 68 | 
             
                end
         | 
| 69 69 |  | 
| 70 70 | 
             
                describe "pending" do
         | 
| 71 71 | 
             
                  it do
         | 
| 72 72 | 
             
                    results = S3Relay::Upload.pending.all
         | 
| 73 | 
            -
                    results.must_include @pending
         | 
| 74 | 
            -
                    results.wont_include @imported
         | 
| 73 | 
            +
                    _(results).must_include @pending
         | 
| 74 | 
            +
                    _(results).wont_include @imported
         | 
| 75 75 | 
             
                  end
         | 
| 76 76 | 
             
                end
         | 
| 77 77 |  | 
| 78 78 | 
             
                describe "imported" do
         | 
| 79 79 | 
             
                  it do
         | 
| 80 80 | 
             
                    results = S3Relay::Upload.imported.all
         | 
| 81 | 
            -
                    results.wont_include @pending
         | 
| 82 | 
            -
                    results.must_include @imported
         | 
| 81 | 
            +
                    _(results).wont_include @pending
         | 
| 82 | 
            +
                    _(results).must_include @imported
         | 
| 83 83 | 
             
                  end
         | 
| 84 84 | 
             
                end
         | 
| 85 85 | 
             
              end
         | 
| 86 86 |  | 
| 87 87 | 
             
              describe "upon finalization" do
         | 
| 88 88 | 
             
                it do
         | 
| 89 | 
            -
                  @upload.state.must_equal "pending"
         | 
| 90 | 
            -
                  @upload.pending_at.wont_equal nil
         | 
| 89 | 
            +
                  _(@upload.state).must_equal "pending"
         | 
| 90 | 
            +
                  _(@upload.pending_at).wont_equal nil
         | 
| 91 91 | 
             
                end
         | 
| 92 92 | 
             
              end
         | 
| 93 93 |  | 
| 94 94 | 
             
              describe "#pending?" do
         | 
| 95 | 
            -
                it { @upload.pending | 
| 95 | 
            +
                it { _(@upload.pending?).must_equal true }
         | 
| 96 96 | 
             
              end
         | 
| 97 97 |  | 
| 98 98 | 
             
              describe "#imported" do
         | 
| 99 99 | 
             
                it do
         | 
| 100 100 | 
             
                  @upload.state = "imported"
         | 
| 101 | 
            -
                  @upload.imported | 
| 101 | 
            +
                  _(@upload.imported?).must_equal true
         | 
| 102 102 | 
             
                end
         | 
| 103 103 | 
             
              end
         | 
| 104 104 |  | 
| 105 105 | 
             
              describe "#mark_imported!" do
         | 
| 106 106 | 
             
                it do
         | 
| 107 107 | 
             
                  @upload.mark_imported!
         | 
| 108 | 
            -
                  @upload.state.must_equal "imported"
         | 
| 109 | 
            -
                  @upload.imported_at.wont_equal nil
         | 
| 108 | 
            +
                  _(@upload.state).must_equal "imported"
         | 
| 109 | 
            +
                  _(@upload.imported_at).wont_equal nil
         | 
| 110 110 | 
             
                end
         | 
| 111 111 | 
             
              end
         | 
| 112 112 |  | 
| 113 113 | 
             
              describe "#notify_parent" do
         | 
| 114 | 
            -
                before { @upload =  | 
| 114 | 
            +
                before { @upload = FactoryBot.build(:file_upload) }
         | 
| 115 115 |  | 
| 116 116 | 
             
                describe "when the parent is associated" do
         | 
| 117 117 | 
             
                  it do
         | 
| 118 | 
            -
                    @product =  | 
| 118 | 
            +
                    @product = FactoryBot.create(:product)
         | 
| 119 119 | 
             
                    @upload.parent = @product
         | 
| 120 120 | 
             
                    @product.expects(:import_upload)
         | 
| 121 121 | 
             
                    @upload.save
         | 
| @@ -135,7 +135,7 @@ describe S3Relay::Upload do | |
| 135 135 | 
             
                  S3Relay::PrivateUrl.expects(:new).with(uuid, filename).returns(klass)
         | 
| 136 136 | 
             
                  klass.expects(:generate).returns(url)
         | 
| 137 137 |  | 
| 138 | 
            -
                  @upload.private_url.must_equal url
         | 
| 138 | 
            +
                  _(@upload.private_url).must_equal url
         | 
| 139 139 | 
             
                end
         | 
| 140 140 | 
             
              end
         | 
| 141 141 |  | 
    
        data/test/test_helper.rb
    CHANGED
    
    | @@ -1,4 +1,4 @@ | |
| 1 | 
            -
            ENV["RAILS_ENV"]  | 
| 1 | 
            +
            ENV["RAILS_ENV"] ||= "test"
         | 
| 2 2 |  | 
| 3 3 | 
             
            IS_RAKE_TASK = (!! ($0 =~ /rake/))
         | 
| 4 4 |  | 
| @@ -14,16 +14,13 @@ if IS_RAKE_TASK | |
| 14 14 | 
             
              end
         | 
| 15 15 | 
             
            end
         | 
| 16 16 |  | 
| 17 | 
            -
            ENV["RAILS_ENV"] = "test"
         | 
| 18 17 | 
             
            require File.expand_path("../dummy/config/environment",  __FILE__)
         | 
| 19 18 |  | 
| 20 19 | 
             
            Dir[File.join("./test/factories/*.rb")].sort.each { |f| require f }
         | 
| 21 20 |  | 
| 22 | 
            -
            require "minitest/autorun"
         | 
| 23 21 | 
             
            require "rails/generators"
         | 
| 24 22 | 
             
            require "rails/test_help"
         | 
| 25 23 | 
             
            require "minitest/rails"
         | 
| 26 | 
            -
            require "minitest | 
| 27 | 
            -
            require "mocha/mini_test"
         | 
| 24 | 
            +
            require "mocha/minitest"
         | 
| 28 25 |  | 
| 29 26 | 
             
            Dir[File.join("./test/support/*.rb")].sort.each { |f| require f }
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: s3_relay
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.7.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Kenny Johnston
         | 
| 8 | 
            -
            autorequire: | 
| 8 | 
            +
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2020-11-29 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: coffee-rails
         | 
| @@ -30,128 +30,108 @@ dependencies: | |
| 30 30 | 
             
                requirements:
         | 
| 31 31 | 
             
                - - ">="
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version: '5. | 
| 33 | 
            +
                    version: '5.0'
         | 
| 34 34 | 
             
              type: :runtime
         | 
| 35 35 | 
             
              prerelease: false
         | 
| 36 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 37 | 
             
                requirements:
         | 
| 38 38 | 
             
                - - ">="
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version: '5. | 
| 40 | 
            +
                    version: '5.0'
         | 
| 41 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 42 | 
             
              name: addressable
         | 
| 43 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 44 | 
             
                requirements:
         | 
| 45 45 | 
             
                - - ">="
         | 
| 46 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version: 2. | 
| 47 | 
            +
                    version: 2.5.2
         | 
| 48 48 | 
             
              type: :runtime
         | 
| 49 49 | 
             
              prerelease: false
         | 
| 50 50 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 51 | 
             
                requirements:
         | 
| 52 52 | 
             
                - - ">="
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version: 2. | 
| 55 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            -
              name: guard-minitest
         | 
| 57 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 | 
            -
                requirements:
         | 
| 59 | 
            -
                - - "~>"
         | 
| 60 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: '2.4'
         | 
| 62 | 
            -
                - - ">="
         | 
| 63 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 64 | 
            -
                    version: 2.4.6
         | 
| 65 | 
            -
              type: :development
         | 
| 66 | 
            -
              prerelease: false
         | 
| 67 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 68 | 
            -
                requirements:
         | 
| 69 | 
            -
                - - "~>"
         | 
| 70 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 71 | 
            -
                    version: '2.4'
         | 
| 72 | 
            -
                - - ">="
         | 
| 73 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 74 | 
            -
                    version: 2.4.6
         | 
| 54 | 
            +
                    version: 2.5.2
         | 
| 75 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 76 56 | 
             
              name: minitest-rails
         | 
| 77 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 78 58 | 
             
                requirements:
         | 
| 79 59 | 
             
                - - "~>"
         | 
| 80 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 81 | 
            -
                    version:  | 
| 61 | 
            +
                    version: '5.2'
         | 
| 82 62 | 
             
                - - ">="
         | 
| 83 63 | 
             
                  - !ruby/object:Gem::Version
         | 
| 84 | 
            -
                    version:  | 
| 64 | 
            +
                    version: 5.2.0
         | 
| 85 65 | 
             
              type: :development
         | 
| 86 66 | 
             
              prerelease: false
         | 
| 87 67 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 88 68 | 
             
                requirements:
         | 
| 89 69 | 
             
                - - "~>"
         | 
| 90 70 | 
             
                  - !ruby/object:Gem::Version
         | 
| 91 | 
            -
                    version:  | 
| 71 | 
            +
                    version: '5.2'
         | 
| 92 72 | 
             
                - - ">="
         | 
| 93 73 | 
             
                  - !ruby/object:Gem::Version
         | 
| 94 | 
            -
                    version:  | 
| 74 | 
            +
                    version: 5.2.0
         | 
| 95 75 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 96 76 | 
             
              name: mocha
         | 
| 97 77 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 98 78 | 
             
                requirements:
         | 
| 99 79 | 
             
                - - "~>"
         | 
| 100 80 | 
             
                  - !ruby/object:Gem::Version
         | 
| 101 | 
            -
                    version: '1. | 
| 81 | 
            +
                    version: '1.11'
         | 
| 102 82 | 
             
                - - ">="
         | 
| 103 83 | 
             
                  - !ruby/object:Gem::Version
         | 
| 104 | 
            -
                    version: 1.2 | 
| 84 | 
            +
                    version: 1.11.2
         | 
| 105 85 | 
             
              type: :development
         | 
| 106 86 | 
             
              prerelease: false
         | 
| 107 87 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 108 88 | 
             
                requirements:
         | 
| 109 89 | 
             
                - - "~>"
         | 
| 110 90 | 
             
                  - !ruby/object:Gem::Version
         | 
| 111 | 
            -
                    version: '1. | 
| 91 | 
            +
                    version: '1.11'
         | 
| 112 92 | 
             
                - - ">="
         | 
| 113 93 | 
             
                  - !ruby/object:Gem::Version
         | 
| 114 | 
            -
                    version: 1.2 | 
| 94 | 
            +
                    version: 1.11.2
         | 
| 115 95 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 116 96 | 
             
              name: pg
         | 
| 117 97 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 118 98 | 
             
                requirements:
         | 
| 119 99 | 
             
                - - "~>"
         | 
| 120 100 | 
             
                  - !ruby/object:Gem::Version
         | 
| 121 | 
            -
                    version: ' | 
| 101 | 
            +
                    version: '1.2'
         | 
| 122 102 | 
             
                - - ">="
         | 
| 123 103 | 
             
                  - !ruby/object:Gem::Version
         | 
| 124 | 
            -
                    version:  | 
| 104 | 
            +
                    version: 1.2.3
         | 
| 125 105 | 
             
              type: :development
         | 
| 126 106 | 
             
              prerelease: false
         | 
| 127 107 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 128 108 | 
             
                requirements:
         | 
| 129 109 | 
             
                - - "~>"
         | 
| 130 110 | 
             
                  - !ruby/object:Gem::Version
         | 
| 131 | 
            -
                    version: ' | 
| 111 | 
            +
                    version: '1.2'
         | 
| 132 112 | 
             
                - - ">="
         | 
| 133 113 | 
             
                  - !ruby/object:Gem::Version
         | 
| 134 | 
            -
                    version:  | 
| 114 | 
            +
                    version: 1.2.3
         | 
| 135 115 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 136 116 | 
             
              name: simplecov
         | 
| 137 117 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 138 118 | 
             
                requirements:
         | 
| 139 119 | 
             
                - - "~>"
         | 
| 140 120 | 
             
                  - !ruby/object:Gem::Version
         | 
| 141 | 
            -
                    version: '0. | 
| 121 | 
            +
                    version: '0.20'
         | 
| 142 122 | 
             
                - - ">="
         | 
| 143 123 | 
             
                  - !ruby/object:Gem::Version
         | 
| 144 | 
            -
                    version: 0. | 
| 124 | 
            +
                    version: 0.20.0
         | 
| 145 125 | 
             
              type: :development
         | 
| 146 126 | 
             
              prerelease: false
         | 
| 147 127 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 148 128 | 
             
                requirements:
         | 
| 149 129 | 
             
                - - "~>"
         | 
| 150 130 | 
             
                  - !ruby/object:Gem::Version
         | 
| 151 | 
            -
                    version: '0. | 
| 131 | 
            +
                    version: '0.20'
         | 
| 152 132 | 
             
                - - ">="
         | 
| 153 133 | 
             
                  - !ruby/object:Gem::Version
         | 
| 154 | 
            -
                    version: 0. | 
| 134 | 
            +
                    version: 0.20.0
         | 
| 155 135 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 156 136 | 
             
              name: thor
         | 
| 157 137 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -166,9 +146,8 @@ dependencies: | |
| 166 146 | 
             
                - - ">="
         | 
| 167 147 | 
             
                  - !ruby/object:Gem::Version
         | 
| 168 148 | 
             
                    version: '0'
         | 
| 169 | 
            -
            description:  | 
| 170 | 
            -
               | 
| 171 | 
            -
              your Rails app to asynchronously ingest the files.
         | 
| 149 | 
            +
            description: Enables direct file uploads to Amazon S3 and provides a flexible pattern
         | 
| 150 | 
            +
              for your Rails app to asynchronously ingest the files.
         | 
| 172 151 | 
             
            email:
         | 
| 173 152 | 
             
            - kjohnston.ca@gmail.com
         | 
| 174 153 | 
             
            executables: []
         | 
| @@ -268,7 +247,7 @@ homepage: http://github.com/kjohnston/s3_relay | |
| 268 247 | 
             
            licenses:
         | 
| 269 248 | 
             
            - MIT
         | 
| 270 249 | 
             
            metadata: {}
         | 
| 271 | 
            -
            post_install_message: | 
| 250 | 
            +
            post_install_message:
         | 
| 272 251 | 
             
            rdoc_options: []
         | 
| 273 252 | 
             
            require_paths:
         | 
| 274 253 | 
             
            - lib
         | 
| @@ -283,9 +262,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 283 262 | 
             
                - !ruby/object:Gem::Version
         | 
| 284 263 | 
             
                  version: '0'
         | 
| 285 264 | 
             
            requirements: []
         | 
| 286 | 
            -
             | 
| 287 | 
            -
             | 
| 288 | 
            -
            signing_key: 
         | 
| 265 | 
            +
            rubygems_version: 3.1.4
         | 
| 266 | 
            +
            signing_key:
         | 
| 289 267 | 
             
            specification_version: 4
         | 
| 290 268 | 
             
            summary: Direct uploads to S3 and ingestion by your Rails app.
         | 
| 291 269 | 
             
            test_files:
         |