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.