lib/tasks/check_upgrade.rake
require 'rake'
require 'jsonapi-resources'
namespace :jsonapi do
namespace :resources do
desc 'Checks application for orphaned overrides'
task :check_upgrade => :environment do
Rails.application.eager_load!
resource_klasses = ObjectSpace.each_object(Class).select { |klass| klass < JSONAPI::Resource}
puts "Checking #{resource_klasses.count} resources"
issues_found = 0
klasses_with_deprecated = resource_klasses.select { |klass| klass.methods.include?(:find_records) }
unless klasses_with_deprecated.empty?
puts " Found the following resources the still implement `find_records`:"
klasses_with_deprecated.each { |klass| puts " #{klass}"}
puts " The `find_records` method is no longer called by JR. Please review and ensure your functionality is ported over."
issues_found = issues_found + klasses_with_deprecated.length
end
klasses_with_deprecated = resource_klasses.select { |klass| klass.methods.include?(:records_for) }
unless klasses_with_deprecated.empty?
puts " Found the following resources the still implement `records_for`:"
klasses_with_deprecated.each { |klass| puts " #{klass}"}
puts " The `records_for` method is no longer called by JR. Please review and ensure your functionality is ported over."
issues_found = issues_found + klasses_with_deprecated.length
end
klasses_with_deprecated = resource_klasses.select { |klass| klass.methods.include?(:apply_includes) }
unless klasses_with_deprecated.empty?
puts " Found the following resources the still implement `apply_includes`:"
klasses_with_deprecated.each { |klass| puts " #{klass}"}
puts " The `apply_includes` method is no longer called by JR. Please review and ensure your functionality is ported over."
issues_found = issues_found + klasses_with_deprecated.length
end
if issues_found > 0
puts "Finished inspection. #{issues_found} issues found that may impact upgrading. Please address these issues. "
else
puts "Finished inspection with no issues found. Note this is only a cursory check for method overrides that will no \n" \
"longer be called by JSONAPI::Resources. This check in no way assures your code will continue to function as \n" \
"it did before the upgrade. Please do adequate testing before using in production."
end
end
end
end