Skip to content

Commit

Permalink
Merge pull request #1222 from cerebris/check_upgrade
Browse files Browse the repository at this point in the history
Check upgrade
  • Loading branch information
lgebhardt authored Feb 25, 2019
2 parents 6ef031b + dd31121 commit c24aec8
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 11 deletions.
1 change: 1 addition & 0 deletions lib/jsonapi-resources.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
require 'jsonapi/resources/railtie'
require 'jsonapi/naive_cache'
require 'jsonapi/compiled_json'
require 'jsonapi/resource'
Expand Down
21 changes: 10 additions & 11 deletions lib/jsonapi/active_relation_resource_finder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,8 @@ def find(filters, options = {})

paginator = options[:paginator]

records = find_records(records: records(options),
sort_criteria: sort_criteria,
filters: filters,
records = apply_request_settings_to_records(records: records(options),
sort_criteria: sort_criteria,filters: filters,
join_manager: join_manager,
paginator: paginator,
options: options)
Expand All @@ -45,7 +44,7 @@ def count(filters, options = {})
join_manager = JoinManager.new(resource_klass: self,
filters: filters)

records = find_records(records: records(options),
records = apply_request_settings_to_records(records: records(options),
filters: filters,
join_manager: join_manager,
options: options)
Expand Down Expand Up @@ -100,7 +99,7 @@ def find_fragments(filters, options = {})

paginator = options[:paginator]

records = find_records(records: records(options),
records = apply_request_settings_to_records(records: records(options),
filters: filters,
sort_criteria: sort_criteria,
paginator: paginator,
Expand Down Expand Up @@ -229,7 +228,7 @@ def count_related(source_rid, relationship_name, options = {})
source_relationship: relationship,
filters: filters)

records = find_records(records: records(options),
records = apply_request_settings_to_records(records: records(options),
resource_klass: related_klass,
primary_keys: source_rid.id,
join_manager: join_manager,
Expand Down Expand Up @@ -306,13 +305,13 @@ def to_one_relationships_for_linkage(include_related)
end

def find_record_by_key(key, options = {})
record = find_records(records: records(options), primary_keys: key, options: options).first
record = apply_request_settings_to_records(records: records(options), primary_keys: key, options: options).first
fail JSONAPI::Exceptions::RecordNotFound.new(key) if record.nil?
record
end

def find_records_by_keys(keys, options = {})
find_records(records: records(options), primary_keys: keys, options: options)
apply_request_settings_to_records(records: records(options), primary_keys: keys, options: options)
end

def find_related_monomorphic_fragments(source_rids, relationship, options, connect_source_identity)
Expand All @@ -337,7 +336,7 @@ def find_related_monomorphic_fragments(source_rids, relationship, options, conne

paginator = options[:paginator] if source_rids.count == 1

records = find_records(records: records(options),
records = apply_request_settings_to_records(records: records(options),
resource_klass: resource_klass,
sort_criteria: sort_criteria,
primary_keys: source_ids,
Expand Down Expand Up @@ -464,7 +463,7 @@ def find_related_polymorphic_fragments(source_rids, relationship, options, conne

# Note: We will sort by the source table. Without using unions we can't sort on a polymorphic relationship
# in any manner that makes sense
records = find_records(records: records(options),
records = apply_request_settings_to_records(records: records(options),
resource_klass: resource_klass,
sort_primary: true,
primary_keys: source_ids,
Expand Down Expand Up @@ -615,7 +614,7 @@ def find_related_polymorphic_fragments(source_rids, relationship, options, conne
related_fragments
end

def find_records(records:,
def apply_request_settings_to_records(records:,
join_manager: JoinManager.new(resource_klass: self),
resource_klass: self,
filters: {},
Expand Down
9 changes: 9 additions & 0 deletions lib/jsonapi/resources/railtie.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
module JSONAPI
module Resources
class Railtie < Rails::Railtie
rake_tasks do
load 'tasks/check_upgrade.rake'
end
end
end
end
52 changes: 52 additions & 0 deletions lib/tasks/check_upgrade.rake
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
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

0 comments on commit c24aec8

Please sign in to comment.