effective_assets 1.8.0 → 1.9.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/MIT-LICENSE +1 -1
- data/README.md +6 -18
- data/app/jobs/effective/process_with_active_job.rb +12 -0
- data/app/jobs/effective/process_with_sucker_punch_job.rb +15 -0
- data/app/models/effective/asset.rb +44 -14
- data/config/effective_assets.rb +3 -3
- data/lib/effective_assets/engine.rb +1 -1
- data/lib/effective_assets/version.rb +1 -1
- data/lib/effective_assets.rb +0 -1
- data/lib/generators/effective_assets/install_generator.rb +0 -3
- data/lib/tasks/effective_assets_tasks.rake +12 -15
- metadata +9 -9
- data/Rakefile +0 -23
- data/app/models/effective/delayed_job.rb +0 -70
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 4203bea664bf1bdd6bb31fb866375a10a186b51b
         | 
| 4 | 
            +
              data.tar.gz: 0d8792dd7b61066eb0e13d671d8c591c98052a0e
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 8b36113a751f8240e1929663e61e9f91128f336746d3848002c9fd84c5fb6425f19dd74fafa3513089ed70dd96b169dc801579fdf8ba8ef4102abb96ad49d623
         | 
| 7 | 
            +
              data.tar.gz: e49cb21cfc006dc6116098d85a64cedabf170ab0780a9753862f3f1770b4953ac0d8599ca4bc645a0cc3d15557ce8126be95e82be9ca41a83d4c4ea5e8e0329e
         | 
    
        data/MIT-LICENSE
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -355,9 +355,11 @@ Has final say over the privacy setting when uploaded from this form. | |
| 355 355 |  | 
| 356 356 | 
             
            ### Image Processing and Resizing
         | 
| 357 357 |  | 
| 358 | 
            -
            CarrierWave  | 
| 358 | 
            +
            CarrierWave is used by this gem to perform image versioning.
         | 
| 359 359 |  | 
| 360 | 
            -
             | 
| 360 | 
            +
            All image processing is run asynchronously.
         | 
| 361 | 
            +
             | 
| 362 | 
            +
            If there is a valid ActiveJob queue_adapter configured, it will be used.  Otherwise we rely on the sucker_punch gem.
         | 
| 361 363 |  | 
| 362 364 | 
             
            See the installer created at `app/uploaders/asset_uploader.rb` to configure image versions.
         | 
| 363 365 |  | 
| @@ -505,20 +507,6 @@ rake effective_assets:check[1,200]  # check #1..#200 | |
| 505 507 | 
             
            rake effective:assets:check[1,200,:thumb]   # check #1..#200 only :thumb versions
         | 
| 506 508 | 
             
            ```
         | 
| 507 509 |  | 
| 508 | 
            -
            ### Clear
         | 
| 509 | 
            -
             | 
| 510 | 
            -
            Deletes all effective_assets related jobs on the DelayedJob queue.
         | 
| 511 | 
            -
             | 
| 512 | 
            -
            ```ruby
         | 
| 513 | 
            -
            rake effective_assets:clear
         | 
| 514 | 
            -
            ```
         | 
| 515 | 
            -
             | 
| 516 | 
            -
            or to clear all jobs, even non-effective_assets related jobs, use DelayedJob's rake task:
         | 
| 517 | 
            -
             | 
| 518 | 
            -
            ```ruby
         | 
| 519 | 
            -
            rake jobs:clear
         | 
| 520 | 
            -
            ```
         | 
| 521 | 
            -
             | 
| 522 510 | 
             
            ## License
         | 
| 523 511 |  | 
| 524 512 | 
             
            MIT License.  Copyright [Code and Effect Inc.](http://www.codeandeffect.com/)
         | 
| @@ -526,11 +514,11 @@ MIT License.  Copyright [Code and Effect Inc.](http://www.codeandeffect.com/) | |
| 526 514 |  | 
| 527 515 | 
             
            ## Credits
         | 
| 528 516 |  | 
| 529 | 
            -
            This gem  | 
| 517 | 
            +
            This gem relies on:
         | 
| 530 518 |  | 
| 531 519 | 
             
            CarrierWave (https://github.com/carrierwaveuploader/carrierwave)
         | 
| 532 520 |  | 
| 533 | 
            -
             | 
| 521 | 
            +
            sucker_punch (https://github.com/brandonhilkert/sucker_punch)
         | 
| 534 522 |  | 
| 535 523 | 
             
            jQuery-File-Upload (https://github.com/blueimp/jQuery-File-Upload)
         | 
| 536 524 |  | 
| @@ -0,0 +1,12 @@ | |
| 1 | 
            +
            module Effective
         | 
| 2 | 
            +
              class ProcessWithActiveJob < (defined?(ApplicationJob) ? ApplicationJob : ActiveJob::Base)
         | 
| 3 | 
            +
             | 
| 4 | 
            +
                def perform(id)
         | 
| 5 | 
            +
                  ActiveRecord::Base.connection_pool.with_connection do
         | 
| 6 | 
            +
                    asset = id.kind_of?(Effective::Asset) ? id : Effective::Asset.where(id: (id.to_i rescue 0)).first
         | 
| 7 | 
            +
                    asset.process! if asset
         | 
| 8 | 
            +
                  end
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
            end
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            require 'sucker_punch'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Effective
         | 
| 4 | 
            +
              class ProcessWithSuckerPunchJob
         | 
| 5 | 
            +
                include ::SuckerPunch::Job
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def perform(id)
         | 
| 8 | 
            +
                  ActiveRecord::Base.connection_pool.with_connection do
         | 
| 9 | 
            +
                    asset = id.kind_of?(Effective::Asset) ? id : Effective::Asset.where(id: (id.to_i rescue 0)).first
         | 
| 10 | 
            +
                    asset.process! if asset
         | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
            end
         | 
| @@ -51,7 +51,7 @@ module Effective | |
| 51 51 |  | 
| 52 52 | 
             
                before_validation :set_content_type
         | 
| 53 53 | 
             
                before_save :update_asset_dimensions
         | 
| 54 | 
            -
                 | 
| 54 | 
            +
                after_commit :queue_async_job
         | 
| 55 55 |  | 
| 56 56 | 
             
                default_scope -> { order(:id) }
         | 
| 57 57 | 
             
                scope :nonplaceholder, -> { where("#{EffectiveAssets.assets_table_name}.upload_file != ?", 'placeholder') }
         | 
| @@ -78,7 +78,7 @@ module Effective | |
| 78 78 |  | 
| 79 79 | 
             
                  # Just call me with Asset.create_from_url('http://somewhere.com/somthing.jpg')
         | 
| 80 80 | 
             
                  def create_from_url(url, options = {})
         | 
| 81 | 
            -
                    opts = {: | 
| 81 | 
            +
                    opts = { upload_file: url, user_id: 1, aws_acl: EffectiveAssets.aws_acl }.merge(options)
         | 
| 82 82 |  | 
| 83 83 | 
             
                    attempts = 3  # Try to upload this string file 3 times
         | 
| 84 84 | 
             
                    begin
         | 
| @@ -104,7 +104,7 @@ module Effective | |
| 104 104 |  | 
| 105 105 | 
             
                    filename = URI.escape(filename).gsub(/%\d\d|[^a-zA-Z0-9.-]/, '_')  # Replace anything not A-Z, a-z, 0-9, . -
         | 
| 106 106 |  | 
| 107 | 
            -
                    opts = {: | 
| 107 | 
            +
                    opts = { upload_file: "#{Asset.string_base_path}#{filename}", user_id: 1, aws_acl: EffectiveAssets.aws_acl }.merge(options)
         | 
| 108 108 |  | 
| 109 109 | 
             
                    attempts = 3  # Try to upload this string file 3 times
         | 
| 110 110 | 
             
                    begin
         | 
| @@ -157,11 +157,11 @@ module Effective | |
| 157 157 | 
             
                end
         | 
| 158 158 |  | 
| 159 159 | 
             
                def video?
         | 
| 160 | 
            -
                  content_type.include? 'video'
         | 
| 160 | 
            +
                  content_type.include? 'video/'
         | 
| 161 161 | 
             
                end
         | 
| 162 162 |  | 
| 163 163 | 
             
                def image?
         | 
| 164 | 
            -
                  content_type.include? 'image'
         | 
| 164 | 
            +
                  content_type.include? 'image/'
         | 
| 165 165 | 
             
                end
         | 
| 166 166 |  | 
| 167 167 | 
             
                def icon?
         | 
| @@ -169,7 +169,7 @@ module Effective | |
| 169 169 | 
             
                end
         | 
| 170 170 |  | 
| 171 171 | 
             
                def audio?
         | 
| 172 | 
            -
                  content_type.include? 'audio'
         | 
| 172 | 
            +
                  content_type.include? 'audio/'
         | 
| 173 173 | 
             
                end
         | 
| 174 174 |  | 
| 175 175 | 
             
                def versions_info
         | 
| @@ -180,15 +180,41 @@ module Effective | |
| 180 180 | 
             
                  title
         | 
| 181 181 | 
             
                end
         | 
| 182 182 |  | 
| 183 | 
            +
                def placeholder?
         | 
| 184 | 
            +
                  upload_file.blank? || upload_file == 'placeholder'.freeze
         | 
| 185 | 
            +
                end
         | 
| 186 | 
            +
             | 
| 187 | 
            +
                # This method is called asynchronously by an after_commit filter
         | 
| 183 188 | 
             
                def process!
         | 
| 189 | 
            +
                  # Make sure carrierwave-aws sets the correct permissions
         | 
| 184 190 | 
             
                  if data.respond_to?(:aws_acl) && aws_acl.present?
         | 
| 185 | 
            -
                    data.aws_acl =  | 
| 186 | 
            -
                    data.versions.each { |_, data| data.aws_acl =  | 
| 191 | 
            +
                    data.aws_acl = aws_acl
         | 
| 192 | 
            +
                    data.versions.each { |_, data| data.aws_acl = aws_acl }
         | 
| 187 193 | 
             
                  end
         | 
| 188 194 |  | 
| 189 | 
            -
                   | 
| 190 | 
            -
             | 
| 191 | 
            -
             | 
| 195 | 
            +
                  if placeholder?
         | 
| 196 | 
            +
                    puts 'Placeholder Asset processing not required (this is a soft error)'
         | 
| 197 | 
            +
                    # Do nothing
         | 
| 198 | 
            +
                  elsif image? == false
         | 
| 199 | 
            +
                    puts 'Non-image Asset processing not required'
         | 
| 200 | 
            +
                    # Do Nothing
         | 
| 201 | 
            +
                  elsif upload_file.include?(Effective::Asset.string_base_path)
         | 
| 202 | 
            +
                    puts 'String-based Asset processing and uploading'
         | 
| 203 | 
            +
             | 
| 204 | 
            +
                    data.cache_stored_file!
         | 
| 205 | 
            +
                    data.retrieve_from_cache!(data.cache_name)
         | 
| 206 | 
            +
                    data.recreate_versions!
         | 
| 207 | 
            +
                  elsif upload_file.include?(Effective::Asset.s3_base_path)
         | 
| 208 | 
            +
                    # Carrierwave must download the file, process it, then upload the generated versions to S3
         | 
| 209 | 
            +
                    puts 'S3 Uploaded Asset downloading and processing'
         | 
| 210 | 
            +
             | 
| 211 | 
            +
                    self.remote_data_url = url
         | 
| 212 | 
            +
                  else
         | 
| 213 | 
            +
                    puts 'Non S3 Asset downloading and processing'
         | 
| 214 | 
            +
                    puts 'Downloading #{asset.url}'
         | 
| 215 | 
            +
             | 
| 216 | 
            +
                    self.remote_data_url = upload_file
         | 
| 217 | 
            +
                  end
         | 
| 192 218 |  | 
| 193 219 | 
             
                  self.processed = true
         | 
| 194 220 | 
             
                  save!
         | 
| @@ -235,9 +261,13 @@ module Effective | |
| 235 261 | 
             
                  true
         | 
| 236 262 | 
             
                end
         | 
| 237 263 |  | 
| 238 | 
            -
                def  | 
| 239 | 
            -
                  if  | 
| 240 | 
            -
             | 
| 264 | 
            +
                def queue_async_job
         | 
| 265 | 
            +
                  return if processed? || placeholder?
         | 
| 266 | 
            +
             | 
| 267 | 
            +
                  if [:inline, :async, nil].include?((Rails.application.config.active_job[:queue_adapter] rescue nil))
         | 
| 268 | 
            +
                    Effective::ProcessWithSuckerPunchJob.perform_async(id)
         | 
| 269 | 
            +
                  else
         | 
| 270 | 
            +
                    Effective::ProcessWithActiveJob.perform_later(id)
         | 
| 241 271 | 
             
                  end
         | 
| 242 272 | 
             
                end
         | 
| 243 273 | 
             
              end
         | 
    
        data/config/effective_assets.rb
    CHANGED
    
    | @@ -26,9 +26,9 @@ EffectiveAssets.setup do |config| | |
| 26 26 | 
             
              config.authorization_method = Proc.new { |controller, action, resource| authorize!(action, resource) } # CanCanCan
         | 
| 27 27 |  | 
| 28 28 | 
             
              # This is your S3 bucket information
         | 
| 29 | 
            -
              config.aws_bucket = ''
         | 
| 30 | 
            -
              config.aws_access_key_id = ''
         | 
| 31 | 
            -
              config.aws_secret_access_key = ''
         | 
| 29 | 
            +
              config.aws_bucket = ''              # ENV.fetch('AWS_S3_BUCKET')
         | 
| 30 | 
            +
              config.aws_access_key_id = ''       # ENV.fetch('AWS_ACCESS_KEY_ID')
         | 
| 31 | 
            +
              config.aws_secret_access_key = ''   # ENV.fetch('AWS_SECRET_ACCESS_KEY')
         | 
| 32 32 | 
             
              config.aws_region = 'us-east-1'
         | 
| 33 33 |  | 
| 34 34 | 
             
              config.aws_path = 'assets/'
         | 
| @@ -2,7 +2,7 @@ module EffectiveAssets | |
| 2 2 | 
             
              class Engine < ::Rails::Engine
         | 
| 3 3 | 
             
                engine_name 'effective_assets'
         | 
| 4 4 |  | 
| 5 | 
            -
                config.autoload_paths += Dir["#{config.root}/app/models/**/"]
         | 
| 5 | 
            +
                config.autoload_paths += Dir["#{config.root}/app/models/**/", "#{config.root}/app/jobs/**/"]
         | 
| 6 6 |  | 
| 7 7 | 
             
                # Include Helpers to base application
         | 
| 8 8 | 
             
                initializer 'effective_assets.action_controller' do |app|
         | 
    
        data/lib/effective_assets.rb
    CHANGED
    
    
| @@ -29,9 +29,6 @@ module EffectiveAssets | |
| 29 29 | 
             
                    migration_template ('../' * 3) + 'db/migrate/01_create_effective_assets.rb.erb', 'db/migrate/create_effective_assets.rb'
         | 
| 30 30 | 
             
                  end
         | 
| 31 31 |  | 
| 32 | 
            -
                  def install_delayed_jobs
         | 
| 33 | 
            -
                    run 'rails generate delayed_job:active_record'
         | 
| 34 | 
            -
                  end
         | 
| 35 32 | 
             
                end
         | 
| 36 33 | 
             
              end
         | 
| 37 34 | 
             
            end
         | 
| @@ -2,31 +2,34 @@ require 'open-uri' | |
| 2 2 |  | 
| 3 3 | 
             
            namespace :effective_assets do
         | 
| 4 4 |  | 
| 5 | 
            -
              # rake  | 
| 5 | 
            +
              # rake effective_assets:reprocess
         | 
| 6 6 | 
             
              #
         | 
| 7 7 | 
             
              # To reprocess every Asset:         rake reprocess_assets
         | 
| 8 8 | 
             
              # Or reprocess from ID=100 and up:  rake reprocess_assets[100]
         | 
| 9 9 | 
             
              # Or reprocess from ID=100 to 200:  rake reprocess_assets[100,200]
         | 
| 10 10 |  | 
| 11 | 
            -
               | 
| 11 | 
            +
              desc "Reprocesses Effective::Assets and re-generates versions as per the current app/uploaders/asset_uploader.rb"
         | 
| 12 12 | 
             
              task :reprocess, [:start_at, :end_at] => :environment do |t, args|
         | 
| 13 13 | 
             
                args.with_defaults(:start_at => 1, :end_at => Effective::Asset.unscoped.maximum(:id))
         | 
| 14 14 | 
             
                ids = Range.new(args.start_at.to_i, args.end_at.to_i)
         | 
| 15 15 |  | 
| 16 | 
            -
                puts  | 
| 16 | 
            +
                puts 'Reprocessing assets...'
         | 
| 17 17 |  | 
| 18 | 
            -
                Effective::Asset.where(: | 
| 19 | 
            -
                   | 
| 18 | 
            +
                Effective::Asset.where(processed: true).where(id: ids).find_each do |asset|
         | 
| 19 | 
            +
                  begin
         | 
| 20 | 
            +
                    asset.reprocess!
         | 
| 21 | 
            +
                    puts "Successfully reprocessed ##{asset.id}"
         | 
| 22 | 
            +
                  rescue => e
         | 
| 23 | 
            +
                    puts "Error reprocessing ##{asset.id}: #{e.message}"
         | 
| 24 | 
            +
                  end
         | 
| 20 25 | 
             
                end
         | 
| 21 26 |  | 
| 22 | 
            -
                puts  | 
| 23 | 
            -
                puts "If a worker process is running, the reprocessing will have already begun."
         | 
| 24 | 
            -
                puts "If not, run 'rake jobs:work' to begin the worker process now."
         | 
| 27 | 
            +
                puts 'Done'
         | 
| 25 28 | 
             
              end
         | 
| 26 29 |  | 
| 27 30 | 
             
              # This is going to pull all the versions and check every url manually
         | 
| 28 31 |  | 
| 29 | 
            -
              # rake  | 
| 32 | 
            +
              # rake rake effective_assets:check
         | 
| 30 33 | 
             
              #
         | 
| 31 34 | 
             
              # Checks the actual HTTP response code of the URL for each asset version
         | 
| 32 35 | 
             
              #
         | 
| @@ -90,10 +93,4 @@ namespace :effective_assets do | |
| 90 93 | 
             
                end
         | 
| 91 94 | 
             
              end
         | 
| 92 95 |  | 
| 93 | 
            -
              desc "Deletes all effective_asset related Delayed::Job jobs"
         | 
| 94 | 
            -
              task :clear => :environment do |t, args|
         | 
| 95 | 
            -
                Delayed::Job.where('handler ILIKE ?', '%method_name: :process_asset_without_delay%').delete_all
         | 
| 96 | 
            -
                Delayed::Job.where('handler ILIKE ?', '%method_name: :reprocess_asset_without_delay%').delete_all
         | 
| 97 | 
            -
                puts 'Deleted all effective_asset related Delayed::Job jobs'
         | 
| 98 | 
            -
              end
         | 
| 99 96 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: effective_assets
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.9.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Code and Effect
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2017-01-06 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rails
         | 
| @@ -53,7 +53,7 @@ dependencies: | |
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 54 | 
             
                    version: '0'
         | 
| 55 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            -
              name:  | 
| 56 | 
            +
              name: jquery-rails
         | 
| 57 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 58 | 
             
                requirements:
         | 
| 59 59 | 
             
                - - ">="
         | 
| @@ -67,7 +67,7 @@ dependencies: | |
| 67 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 68 | 
             
                    version: '0'
         | 
| 69 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            -
              name:  | 
| 70 | 
            +
              name: haml-rails
         | 
| 71 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 72 | 
             
                requirements:
         | 
| 73 73 | 
             
                - - ">="
         | 
| @@ -81,7 +81,7 @@ dependencies: | |
| 81 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 82 | 
             
                    version: '0'
         | 
| 83 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 | 
            -
              name:  | 
| 84 | 
            +
              name: sass-rails
         | 
| 85 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 86 | 
             
                requirements:
         | 
| 87 87 | 
             
                - - ">="
         | 
| @@ -95,7 +95,7 @@ dependencies: | |
| 95 95 | 
             
                  - !ruby/object:Gem::Version
         | 
| 96 96 | 
             
                    version: '0'
         | 
| 97 97 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 98 | 
            -
              name:  | 
| 98 | 
            +
              name: sucker_punch
         | 
| 99 99 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 100 100 | 
             
                requirements:
         | 
| 101 101 | 
             
                - - ">="
         | 
| @@ -146,7 +146,6 @@ extra_rdoc_files: [] | |
| 146 146 | 
             
            files:
         | 
| 147 147 | 
             
            - MIT-LICENSE
         | 
| 148 148 | 
             
            - README.md
         | 
| 149 | 
            -
            - Rakefile
         | 
| 150 149 | 
             
            - active_admin/effective_assets.rb
         | 
| 151 150 | 
             
            - app/assets/images/effective_assets/icon_close.png
         | 
| 152 151 | 
             
            - app/assets/images/effective_assets/spinner.gif
         | 
| @@ -178,11 +177,12 @@ files: | |
| 178 177 | 
             
            - app/controllers/effective/s3_uploads_controller.rb
         | 
| 179 178 | 
             
            - app/helpers/effective_assets_helper.rb
         | 
| 180 179 | 
             
            - app/helpers/effective_assets_s3_helper.rb
         | 
| 180 | 
            +
            - app/jobs/effective/process_with_active_job.rb
         | 
| 181 | 
            +
            - app/jobs/effective/process_with_sucker_punch_job.rb
         | 
| 181 182 | 
             
            - app/models/concerns/acts_as_asset_box.rb
         | 
| 182 183 | 
             
            - app/models/effective/access_denied.rb
         | 
| 183 184 | 
             
            - app/models/effective/asset.rb
         | 
| 184 185 | 
             
            - app/models/effective/attachment.rb
         | 
| 185 | 
            -
            - app/models/effective/delayed_job.rb
         | 
| 186 186 | 
             
            - app/models/effective/iframe_uploads.rb
         | 
| 187 187 | 
             
            - app/models/effective/snippets/effective_asset.rb
         | 
| 188 188 | 
             
            - app/models/inputs/asset_box.rb
         | 
| @@ -236,7 +236,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 236 236 | 
             
                  version: '0'
         | 
| 237 237 | 
             
            requirements: []
         | 
| 238 238 | 
             
            rubyforge_project: 
         | 
| 239 | 
            -
            rubygems_version: 2.4. | 
| 239 | 
            +
            rubygems_version: 2.4.5.1
         | 
| 240 240 | 
             
            signing_key: 
         | 
| 241 241 | 
             
            specification_version: 4
         | 
| 242 242 | 
             
            summary: Upload images and files directly to AWS S3 with a custom form input then
         | 
    
        data/Rakefile
    DELETED
    
    | @@ -1,23 +0,0 @@ | |
| 1 | 
            -
            #!/usr/bin/env rake
         | 
| 2 | 
            -
            begin
         | 
| 3 | 
            -
              require 'bundler/setup'
         | 
| 4 | 
            -
            rescue LoadError
         | 
| 5 | 
            -
              puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
         | 
| 6 | 
            -
            end
         | 
| 7 | 
            -
             | 
| 8 | 
            -
            # Our tasks
         | 
| 9 | 
            -
            load 'lib/tasks/effective_assets_tasks.rake'
         | 
| 10 | 
            -
             | 
| 11 | 
            -
            # Testing tasks
         | 
| 12 | 
            -
            APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
         | 
| 13 | 
            -
            load 'rails/tasks/engine.rake'
         | 
| 14 | 
            -
             | 
| 15 | 
            -
            Bundler::GemHelper.install_tasks
         | 
| 16 | 
            -
             | 
| 17 | 
            -
            require 'rspec/core'
         | 
| 18 | 
            -
            require 'rspec/core/rake_task'
         | 
| 19 | 
            -
             | 
| 20 | 
            -
            desc "Run all specs in spec directory (excluding plugin specs)"
         | 
| 21 | 
            -
            RSpec::Core::RakeTask.new(:spec => 'app:db:test:prepare')
         | 
| 22 | 
            -
             | 
| 23 | 
            -
            task :default => :spec
         | 
| @@ -1,70 +0,0 @@ | |
| 1 | 
            -
            # Call with DelayedJob.new.process_asset_images(...)
         | 
| 2 | 
            -
            # Run jobs locally with "rake jobs:work"
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            module Effective
         | 
| 5 | 
            -
              class DelayedJob
         | 
| 6 | 
            -
                def process_asset(obj)
         | 
| 7 | 
            -
                  if obj.kind_of?(Effective::Asset)
         | 
| 8 | 
            -
                    asset = obj
         | 
| 9 | 
            -
                  else
         | 
| 10 | 
            -
                    asset = Effective::Asset.where(:id => (obj.to_i rescue 0)).first
         | 
| 11 | 
            -
                  end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                  if asset.present? && !asset.processed? && asset.upload_file.present? && asset.upload_file != 'placeholder'
         | 
| 14 | 
            -
                    puts "Processing asset ##{asset.id} from #{asset.upload_file}."
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                    if asset.data.respond_to?(:aws_acl)
         | 
| 17 | 
            -
                      asset.data.aws_acl = asset.aws_acl
         | 
| 18 | 
            -
                      asset.data.versions.each { |_, data| data.aws_acl = asset.aws_acl }
         | 
| 19 | 
            -
                    end
         | 
| 20 | 
            -
             | 
| 21 | 
            -
                    if asset.upload_file.include?(Effective::Asset.string_base_path)
         | 
| 22 | 
            -
                      puts "String-based Asset processing and uploading..."
         | 
| 23 | 
            -
             | 
| 24 | 
            -
                      asset.data.cache_stored_file!
         | 
| 25 | 
            -
                      asset.data.retrieve_from_cache!(asset.data.cache_name)
         | 
| 26 | 
            -
                      asset.data.recreate_versions!
         | 
| 27 | 
            -
                    elsif asset.upload_file.include?(Effective::Asset.s3_base_path)
         | 
| 28 | 
            -
                      puts "S3 Uploaded Asset downloading and processing..."
         | 
| 29 | 
            -
                      # Carrierwave must download the file, process it, then upload the generated versions to S3
         | 
| 30 | 
            -
                      # We only want to process if it's an image, so we don't download zips or videos
         | 
| 31 | 
            -
                      asset.remote_data_url = asset.url if asset.image?
         | 
| 32 | 
            -
                    else
         | 
| 33 | 
            -
                      puts "Non S3 Asset downloading and processing..."
         | 
| 34 | 
            -
                      puts "Downloading #{asset.url}"
         | 
| 35 | 
            -
             | 
| 36 | 
            -
                      # Carrierwave must download the file, process it, then upload it and generated verions to S3
         | 
| 37 | 
            -
                      # We only want to process if it's an image, so we don't download zips or videos
         | 
| 38 | 
            -
                      asset.remote_data_url = asset.upload_file
         | 
| 39 | 
            -
                    end
         | 
| 40 | 
            -
             | 
| 41 | 
            -
                    asset.processed = true
         | 
| 42 | 
            -
                    asset.save!
         | 
| 43 | 
            -
             | 
| 44 | 
            -
                    (GC.start rescue nil)
         | 
| 45 | 
            -
             | 
| 46 | 
            -
                    puts "Successfully processed the asset."
         | 
| 47 | 
            -
                  end
         | 
| 48 | 
            -
                end
         | 
| 49 | 
            -
                handle_asynchronously :process_asset
         | 
| 50 | 
            -
             | 
| 51 | 
            -
                def reprocess_asset(id)
         | 
| 52 | 
            -
                  Rails.logger.info "Processing ##{id}..."
         | 
| 53 | 
            -
                  print "Processing ##{id}..."
         | 
| 54 | 
            -
             | 
| 55 | 
            -
                  begin
         | 
| 56 | 
            -
                    Effective::Asset.find(id).reprocess!
         | 
| 57 | 
            -
             | 
| 58 | 
            -
                    Rails.logger.info "Successfully processed ##{id}"
         | 
| 59 | 
            -
                    print "success"; puts ''
         | 
| 60 | 
            -
                  rescue => e
         | 
| 61 | 
            -
                    Rails.logger.info  "Error: #{id} -> #{e.to_s}"
         | 
| 62 | 
            -
                    print "error: #{e.to_s}"; puts ''
         | 
| 63 | 
            -
                  end
         | 
| 64 | 
            -
             | 
| 65 | 
            -
                  (GC.start rescue nil)
         | 
| 66 | 
            -
                end
         | 
| 67 | 
            -
                handle_asynchronously :reprocess_asset
         | 
| 68 | 
            -
             | 
| 69 | 
            -
              end
         | 
| 70 | 
            -
            end
         |