diff --git a/.rubocop.yml b/.rubocop.yml index e7d729cc..8e00e2dc 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -47,3 +47,7 @@ Style/Documentation: Style/MultilineOperationIndentation: EnforcedStyle: indented + +Style/BlockDelimiters: + Enabled: true + EnforcedStyle: line_count_based diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 36ce4dfc..6e89b8b1 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -78,12 +78,6 @@ Style/AndOr: Exclude: - 'lib/active_model/serializer/lint.rb' -# Offense count: 6 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, SupportedStyles, ProceduralMethods, FunctionalMethods, IgnoredMethods. -Style/BlockDelimiters: - Enabled: false - # Offense count: 46 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, SupportedStyles. diff --git a/lib/active_model/serializer/adapter.rb b/lib/active_model/serializer/adapter.rb index 832fe3f4..61a86e1c 100644 --- a/lib/active_model/serializer/adapter.rb +++ b/lib/active_model/serializer/adapter.rb @@ -58,12 +58,12 @@ module ActiveModel return adapter if adapter.is_a?(Class) adapter_name = adapter.to_s.underscore # 2. return if registered - adapter_map.fetch(adapter_name) { + adapter_map.fetch(adapter_name) do # 3. try to find adapter class from environment adapter_class = find_by_name(adapter_name) register(adapter_name, adapter_class) adapter_class - } + end rescue NameError, ArgumentError => e failure_message = "NameError: #{e.message}. Unknown adapter: #{adapter.inspect}. Valid adapters are: #{adapters}" diff --git a/lib/active_model/serializer/adapter/json_api.rb b/lib/active_model/serializer/adapter/json_api.rb index 3637ccb7..94571eaa 100644 --- a/lib/active_model/serializer/adapter/json_api.rb +++ b/lib/active_model/serializer/adapter/json_api.rb @@ -130,14 +130,11 @@ module ActiveModel end end - def included_resources(include_tree) - included = [] - - serializer.associations(include_tree).each do |association| - add_included_resources_for(association.serializer, include_tree[association.key], included) - end - - included + def included_for(serializer) + included.flat_map do |inc| + association = serializer.associations.find { |assoc| assoc.key == inc.first } + _included_for(association.serializer, inc.second) if association + end.uniq end def add_included_resources_for(serializer, include_tree, included) diff --git a/lib/active_model/serializer/array_serializer.rb b/lib/active_model/serializer/array_serializer.rb index 7a5aed20..9c7b2b93 100644 --- a/lib/active_model/serializer/array_serializer.rb +++ b/lib/active_model/serializer/array_serializer.rb @@ -11,9 +11,9 @@ module ActiveModel @root = options[:root] @object = resources @serializers = resources.map do |resource| - serializer_class = options.fetch(:serializer) { + serializer_class = options.fetch(:serializer) do ActiveModel::Serializer.serializer_for(resource) - } + end if serializer_class.nil? fail NoSerializerError, "No serializer found for resource: #{resource.inspect}" diff --git a/test/action_controller/serialization_test.rb b/test/action_controller/serialization_test.rb index acf62a47..e9288d56 100644 --- a/test/action_controller/serialization_test.rb +++ b/test/action_controller/serialization_test.rb @@ -400,25 +400,25 @@ module ActionController end def test_warn_overridding_use_adapter_as_falsy_on_controller_instance - controller = Class.new(ImplicitSerializationTestController) { + controller = Class.new(ImplicitSerializationTestController) do def use_adapter? false end - }.new - assert_match(/adapter: false/, (capture(:stderr) { + end.new + assert_match(/adapter: false/, (capture(:stderr) do controller.get_serializer(Profile.new) - })) + end)) end def test_dont_warn_overridding_use_adapter_as_truthy_on_controller_instance - controller = Class.new(ImplicitSerializationTestController) { + controller = Class.new(ImplicitSerializationTestController) do def use_adapter? true end - }.new - assert_equal '', (capture(:stderr) { + end.new + assert_equal '', (capture(:stderr) do controller.get_serializer(Profile.new) - }) + end) end end end diff --git a/test/capture_warnings.rb b/test/capture_warnings.rb index 5acdb3a0..7a39e7c2 100644 --- a/test/capture_warnings.rb +++ b/test/capture_warnings.rb @@ -28,9 +28,9 @@ class CaptureWarnings # rubocop:disable Metrics/AbcSize def after_tests(lines) - app_warnings, other_warnings = lines.partition { |line| + app_warnings, other_warnings = lines.partition do |line| line.include?(app_root) && !line.include?(bundle_dir) - } + end header = "#{'-' * 22} app warnings: #{'-' * 22}" output.puts