active_model_serializers/.rubocop.yml
Benjamin Fleischer d9e76c29d5 Make Adapters registerable so they are not namespace-constrained
Changes:

- Introduce Adapter::get for use by Serializer.adapter
- Move Adapter-finding logic from Adapter::adapter_class into Adapter::get

Introduced interfaces:

- non-inherited methods
```ruby
ActiveModel::Serializer::Adapter.adapter_map     # a Hash<adapter_name, adapter_class>
ActiveModel::Serializer::Adapter.adapters        # an Array<adapter_name>
ActiveModel::Serializer::Adapter.register(name, klass) # adds an adapter to the adapter_map
ActiveModel::Serializer::Adapter.get(name_or_klass)    # raises Argument error when adapter not found
```

- Automatically register adapters when subclassing

```ruby
      def self.inherited(subclass)
        ActiveModel::Serializer::Adapter.register(subclass.to_s.demodulize, subclass)
      end
```

- Preserves subclass method `::adapter_class(adapter)`

```ruby
      def self.adapter_class(adapter)
        ActiveModel::Serializer::Adapter.get(adapter)
      end
```

- Serializer.adapter now uses `Adapter.get(config.adapter)` rather than have duplicate logic
2015-09-08 22:59:36 -05:00

53 lines
1004 B
YAML

inherit_from: .rubocop_todo.yml
AllCops:
Exclude:
- config/initializers/forbidden_yaml.rb
- !ruby/regexp /(vendor|bundle|bin|db|tmp)\/.*/
RunRailsCops: true
DisplayCopNames: true
DisplayStyleGuide: true
Lint/NestedMethodDefinition:
Enabled: false
Exclude:
- test/action_controller/serialization_test.rb
Style/StringLiterals:
EnforcedStyle: single_quotes
Style/SpecialGlobalVars:
Enabled: false
Metrics/AbcSize:
Max: 35 # TODO: Lower to 15
Metrics/ClassLength:
Max: 261 # TODO: Lower to 100
Exclude:
- test/**/*.rb
Metrics/CyclomaticComplexity:
Max: 7 # TODO: Lower to 6
Metrics/LineLength:
Max: 251 # TODO: Lower to 80
Metrics/MethodLength:
Max: 106 # TODO: Lower to 10
Metrics/PerceivedComplexity:
Max: 9 # TODO: Lower to 7
Style/AlignParameters:
EnforcedStyle: with_fixed_indentation
Style/ClassAndModuleChildren:
EnforcedStyle: compact
Style/Documentation:
Enabled: false
Style/MultilineOperationIndentation:
EnforcedStyle: indented