AssetSync/asset_sync

NoMethodError: undefined method `sort' for NilClass

jaimejazarenoiii opened this issue · 6 comments

It's telling me that these lines caused the error https://github.com/AssetSync/asset_sync/blob/master/lib/tasks/asset_sync.rake#L28 & https://github.com/mime-types/ruby-mime-types/blob/master/lib/mime/types.rb#L152.

Configs

config/environments/staging.rb

config.assets.digest = true
config.assets.compile = true
config.assets.enabled = true
config.assets.initialize_on_precompile = true
config.assets.js_compressor = :uglifier
config.assets.css_compressor = :sass

config/initializers/asset_sync.rb
config.aws_iam_roles = true
config.fog_provider = "AWS"
config.run_on_precompile = true
config.file_ext_to_mime_type_overrides.clear
config.file_ext_to_mime_type_overrides.add(:js, :"application/x-javascript")
config.fog_directory = ENV.fetch("S3_BUCKET_NAME")
config.fog_region = ENV.fetch("AWS_REGION")
config.gzip_compression = true

What versions of gem are you using?
Also we need a more details backtrace
Since there is no place calling sort in this gem

@PikachuEXE Is it okay if I send a screenshot instead? For some reason I can't copy the log from the server when using VNC Viewer 😭 I'll send one first thing tomorrow.

Here's what I'm seeing.

[ec2-user@ip-*]$ rake assets:precompile
rake aborted!
undefined method `sort' for nil:NilClass
/opt/campus/vendor/cache/ruby/2.3/gems/mime-types-3.1/lib/mime/types.rb:152:in `type_for'
/opt/campus/vendor/cache/ruby/2.3/gems/mime-types-3.1/lib/mime/types/registry.rb:32:in `type_for'
/opt/campus/vendor/cache/ruby/2.3/gems/asset_sync-2.5.0/lib/asset_sync/multi_mime.rb:14:in `lookup'
/opt/campus/vendor/cache/ruby/2.3/gems/asset_sync-2.5.0/lib/asset_sync/storage.rb:145:in `upload_file'
/opt/campus/vendor/cache/ruby/2.3/gems/asset_sync-2.5.0/lib/asset_sync/storage.rb:248:in `block in upload_files'
/opt/campus/vendor/cache/ruby/2.3/gems/asset_sync-2.5.0/lib/asset_sync/storage.rb:246:in `each'
/opt/campus/vendor/cache/ruby/2.3/gems/asset_sync-2.5.0/lib/asset_sync/storage.rb:246:in `upload_files'
/opt/campus/vendor/cache/ruby/2.3/gems/asset_sync-2.5.0/lib/asset_sync/storage.rb:262:in `sync'
/opt/campus/vendor/cache/ruby/2.3/gems/asset_sync-2.5.0/lib/asset_sync/asset_sync.rb:29:in `block in sync'
/opt/campus/vendor/cache/ruby/2.3/gems/asset_sync-2.5.0/lib/asset_sync/asset_sync.rb:51:in `with_config'
/opt/campus/vendor/cache/ruby/2.3/gems/asset_sync-2.5.0/lib/asset_sync/asset_sync.rb:28:in `sync'
/opt/campus/vendor/cache/ruby/2.3/gems/asset_sync-2.5.0/lib/tasks/asset_sync.rake:5:in `block (2 levels) in <main>'
/opt/campus/vendor/cache/ruby/2.3/gems/asset_sync-2.5.0/lib/tasks/asset_sync.rake:28:in `block in <main>'
/opt/campus/bundler_binstubs/rake:29:in `load'
/opt/campus/bundler_binstubs/rake:29:in `<main>'
Tasks: TOP => assets:sync
(See full trace by running task with --trace)

So the file extension name is passed into mime-types and it's unable to find the types (plural) matching the input
As I see your version of mime-types is not the latest (which is 3.2.2)
https://rubygems.org/gems/mime-types/
You might want to update the gem and test again first
If that also doesn't work you can try to find out what file extension is called

Here's what I'm seeing.

[ec2-user@ip-*]$ rake assets:precompile
rake aborted!
undefined method `sort' for nil:NilClass
/opt/campus/vendor/cache/ruby/2.3/gems/mime-types-3.1/lib/mime/types.rb:152:in `type_for'
/opt/campus/vendor/cache/ruby/2.3/gems/mime-types-3.1/lib/mime/types/registry.rb:32:in `type_for'
/opt/campus/vendor/cache/ruby/2.3/gems/asset_sync-2.5.0/lib/asset_sync/multi_mime.rb:14:in `lookup'
/opt/campus/vendor/cache/ruby/2.3/gems/asset_sync-2.5.0/lib/asset_sync/storage.rb:145:in `upload_file'
/opt/campus/vendor/cache/ruby/2.3/gems/asset_sync-2.5.0/lib/asset_sync/storage.rb:248:in `block in upload_files'
/opt/campus/vendor/cache/ruby/2.3/gems/asset_sync-2.5.0/lib/asset_sync/storage.rb:246:in `each'
/opt/campus/vendor/cache/ruby/2.3/gems/asset_sync-2.5.0/lib/asset_sync/storage.rb:246:in `upload_files'
/opt/campus/vendor/cache/ruby/2.3/gems/asset_sync-2.5.0/lib/asset_sync/storage.rb:262:in `sync'
/opt/campus/vendor/cache/ruby/2.3/gems/asset_sync-2.5.0/lib/asset_sync/asset_sync.rb:29:in `block in sync'
/opt/campus/vendor/cache/ruby/2.3/gems/asset_sync-2.5.0/lib/asset_sync/asset_sync.rb:51:in `with_config'
/opt/campus/vendor/cache/ruby/2.3/gems/asset_sync-2.5.0/lib/asset_sync/asset_sync.rb:28:in `sync'
/opt/campus/vendor/cache/ruby/2.3/gems/asset_sync-2.5.0/lib/tasks/asset_sync.rake:5:in `block (2 levels) in <main>'
/opt/campus/vendor/cache/ruby/2.3/gems/asset_sync-2.5.0/lib/tasks/asset_sync.rake:28:in `block in <main>'
/opt/campus/bundler_binstubs/rake:29:in `load'
/opt/campus/bundler_binstubs/rake:29:in `<main>'
Tasks: TOP => assets:sync
(See full trace by running task with --trace)

@joshuamoore totally the same

@PikachuEXE After updating the gem mime-types it worked! Thanks guys.