Skip to content

Commit c24aec8

Browse files
authored
Merge pull request #1222 from cerebris/check_upgrade
Check upgrade
2 parents 6ef031b + dd31121 commit c24aec8

File tree

4 files changed

+72
-11
lines changed

4 files changed

+72
-11
lines changed

lib/jsonapi-resources.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
require 'jsonapi/resources/railtie'
12
require 'jsonapi/naive_cache'
23
require 'jsonapi/compiled_json'
34
require 'jsonapi/resource'

lib/jsonapi/active_relation_resource_finder.rb

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,8 @@ def find(filters, options = {})
2525

2626
paginator = options[:paginator]
2727

28-
records = find_records(records: records(options),
29-
sort_criteria: sort_criteria,
30-
filters: filters,
28+
records = apply_request_settings_to_records(records: records(options),
29+
sort_criteria: sort_criteria,filters: filters,
3130
join_manager: join_manager,
3231
paginator: paginator,
3332
options: options)
@@ -45,7 +44,7 @@ def count(filters, options = {})
4544
join_manager = JoinManager.new(resource_klass: self,
4645
filters: filters)
4746

48-
records = find_records(records: records(options),
47+
records = apply_request_settings_to_records(records: records(options),
4948
filters: filters,
5049
join_manager: join_manager,
5150
options: options)
@@ -100,7 +99,7 @@ def find_fragments(filters, options = {})
10099

101100
paginator = options[:paginator]
102101

103-
records = find_records(records: records(options),
102+
records = apply_request_settings_to_records(records: records(options),
104103
filters: filters,
105104
sort_criteria: sort_criteria,
106105
paginator: paginator,
@@ -229,7 +228,7 @@ def count_related(source_rid, relationship_name, options = {})
229228
source_relationship: relationship,
230229
filters: filters)
231230

232-
records = find_records(records: records(options),
231+
records = apply_request_settings_to_records(records: records(options),
233232
resource_klass: related_klass,
234233
primary_keys: source_rid.id,
235234
join_manager: join_manager,
@@ -306,13 +305,13 @@ def to_one_relationships_for_linkage(include_related)
306305
end
307306

308307
def find_record_by_key(key, options = {})
309-
record = find_records(records: records(options), primary_keys: key, options: options).first
308+
record = apply_request_settings_to_records(records: records(options), primary_keys: key, options: options).first
310309
fail JSONAPI::Exceptions::RecordNotFound.new(key) if record.nil?
311310
record
312311
end
313312

314313
def find_records_by_keys(keys, options = {})
315-
find_records(records: records(options), primary_keys: keys, options: options)
314+
apply_request_settings_to_records(records: records(options), primary_keys: keys, options: options)
316315
end
317316

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

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

340-
records = find_records(records: records(options),
339+
records = apply_request_settings_to_records(records: records(options),
341340
resource_klass: resource_klass,
342341
sort_criteria: sort_criteria,
343342
primary_keys: source_ids,
@@ -464,7 +463,7 @@ def find_related_polymorphic_fragments(source_rids, relationship, options, conne
464463

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

618-
def find_records(records:,
617+
def apply_request_settings_to_records(records:,
619618
join_manager: JoinManager.new(resource_klass: self),
620619
resource_klass: self,
621620
filters: {},

lib/jsonapi/resources/railtie.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module JSONAPI
2+
module Resources
3+
class Railtie < Rails::Railtie
4+
rake_tasks do
5+
load 'tasks/check_upgrade.rake'
6+
end
7+
end
8+
end
9+
end

lib/tasks/check_upgrade.rake

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
require 'rake'
2+
require 'jsonapi-resources'
3+
4+
namespace :jsonapi do
5+
namespace :resources do
6+
desc 'Checks application for orphaned overrides'
7+
task :check_upgrade => :environment do
8+
Rails.application.eager_load!
9+
10+
resource_klasses = ObjectSpace.each_object(Class).select { |klass| klass < JSONAPI::Resource}
11+
12+
puts "Checking #{resource_klasses.count} resources"
13+
14+
issues_found = 0
15+
16+
klasses_with_deprecated = resource_klasses.select { |klass| klass.methods.include?(:find_records) }
17+
unless klasses_with_deprecated.empty?
18+
puts " Found the following resources the still implement `find_records`:"
19+
klasses_with_deprecated.each { |klass| puts " #{klass}"}
20+
puts " The `find_records` method is no longer called by JR. Please review and ensure your functionality is ported over."
21+
22+
issues_found = issues_found + klasses_with_deprecated.length
23+
end
24+
25+
klasses_with_deprecated = resource_klasses.select { |klass| klass.methods.include?(:records_for) }
26+
unless klasses_with_deprecated.empty?
27+
puts " Found the following resources the still implement `records_for`:"
28+
klasses_with_deprecated.each { |klass| puts " #{klass}"}
29+
puts " The `records_for` method is no longer called by JR. Please review and ensure your functionality is ported over."
30+
31+
issues_found = issues_found + klasses_with_deprecated.length
32+
end
33+
34+
klasses_with_deprecated = resource_klasses.select { |klass| klass.methods.include?(:apply_includes) }
35+
unless klasses_with_deprecated.empty?
36+
puts " Found the following resources the still implement `apply_includes`:"
37+
klasses_with_deprecated.each { |klass| puts " #{klass}"}
38+
puts " The `apply_includes` method is no longer called by JR. Please review and ensure your functionality is ported over."
39+
40+
issues_found = issues_found + klasses_with_deprecated.length
41+
end
42+
43+
if issues_found > 0
44+
puts "Finished inspection. #{issues_found} issues found that may impact upgrading. Please address these issues. "
45+
else
46+
puts "Finished inspection with no issues found. Note this is only a cursory check for method overrides that will no \n" \
47+
"longer be called by JSONAPI::Resources. This check in no way assures your code will continue to function as \n" \
48+
"it did before the upgrade. Please do adequate testing before using in production."
49+
end
50+
end
51+
end
52+
end

0 commit comments

Comments
 (0)