sortable-by 0.9.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: c69dc4027db827d7339df15f6b6a82a00dd106c3
4
- data.tar.gz: 6542aa11412834bd4360db4f6f989e2fb56358de
2
+ SHA256:
3
+ metadata.gz: 5b5117bc573fa2cf18ccee9dec86c53cd09920af83463e161ad97c34a50c87c4
4
+ data.tar.gz: 47bed91f217dfc04a5d9180040a18a163e0f2da6597059bb73ce8390c01d5d6e
5
5
  SHA512:
6
- metadata.gz: 12165f68bf353d543f8701ed328586822a8c43d729cd514b8695821214a424926507e53e0fb443639a2051e28626733e6edcb47a5f5530949ae9bd6e9e80aa0a
7
- data.tar.gz: 9008ae98a2a8aacb2bf807b9db1eb428fc6934e39e84ae11369919f46cbe75463c3e63ceb3897f88819cd5b125071c47591290bb0c2d33f950114c0966cd2219
6
+ metadata.gz: 68712cabc1e8d2bc54d4716d27cd896170fad207448814a0c784f7a018bd2da8b0fad7d26ba1cfca8cb884969665f014c3aa0912c457fbb2465a1fa4c7214c5c
7
+ data.tar.gz: 9d9b0f42b50c94cbcd36eec6cb2b1c1367150943a6c252092d84d45b3aecdb5ea1431ff227faa68db045b32fc02983f4d0bcb41fa1619a9f28d4a1ffd1789666
data/.rubocop.yml ADDED
@@ -0,0 +1,18 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.2
3
+
4
+ Metrics/AbcSize:
5
+ Enabled: false
6
+ Naming/FileName:
7
+ Exclude: [lib/sortable-by.rb]
8
+ Metrics/MethodLength:
9
+ Max: 20
10
+ Metrics/LineLength:
11
+ Max: 120
12
+
13
+ Style/TrailingCommaInArguments:
14
+ EnforcedStyleForMultiline: consistent_comma
15
+ Style/TrailingCommaInArrayLiteral:
16
+ EnforcedStyleForMultiline: consistent_comma
17
+ Style/TrailingCommaInHashLiteral:
18
+ EnforcedStyleForMultiline: consistent_comma
data/.travis.yml CHANGED
@@ -1,8 +1,8 @@
1
+ sudo: false
1
2
  rvm:
2
- - 1.9.3
3
- - 2.1.2
4
- - 2.2.2
5
- - 2.3.2
6
- - 2.4.0
3
+ - 2.2
4
+ - 2.3
5
+ - 2.4
6
+ - 2.5
7
7
  gemfile:
8
8
  - Gemfile
data/Gemfile CHANGED
@@ -1,2 +1,2 @@
1
- source "http://rubygems.org"
1
+ source 'http://rubygems.org'
2
2
  gemspec
data/Gemfile.lock CHANGED
@@ -1,47 +1,63 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sortable-by (0.9.0)
4
+ sortable-by (0.10.0)
5
5
  activerecord
6
6
  activesupport
7
7
 
8
8
  GEM
9
9
  remote: http://rubygems.org/
10
10
  specs:
11
- activemodel (5.0.1)
12
- activesupport (= 5.0.1)
13
- activerecord (5.0.1)
14
- activemodel (= 5.0.1)
15
- activesupport (= 5.0.1)
16
- arel (~> 7.0)
17
- activesupport (5.0.1)
11
+ activemodel (5.1.5)
12
+ activesupport (= 5.1.5)
13
+ activerecord (5.1.5)
14
+ activemodel (= 5.1.5)
15
+ activesupport (= 5.1.5)
16
+ arel (~> 8.0)
17
+ activesupport (5.1.5)
18
18
  concurrent-ruby (~> 1.0, >= 1.0.2)
19
19
  i18n (~> 0.7)
20
20
  minitest (~> 5.1)
21
21
  tzinfo (~> 1.1)
22
- arel (7.1.4)
23
- concurrent-ruby (1.0.4)
22
+ arel (8.0.0)
23
+ ast (2.4.0)
24
+ concurrent-ruby (1.0.5)
24
25
  diff-lcs (1.3)
25
- i18n (0.8.1)
26
- minitest (5.10.1)
27
- rake (12.0.0)
28
- rspec (3.5.0)
29
- rspec-core (~> 3.5.0)
30
- rspec-expectations (~> 3.5.0)
31
- rspec-mocks (~> 3.5.0)
32
- rspec-core (3.5.4)
33
- rspec-support (~> 3.5.0)
34
- rspec-expectations (3.5.0)
26
+ i18n (0.9.5)
27
+ concurrent-ruby (~> 1.0)
28
+ minitest (5.11.3)
29
+ parallel (1.12.1)
30
+ parser (2.5.0.4)
31
+ ast (~> 2.4.0)
32
+ powerpack (0.1.1)
33
+ rainbow (3.0.0)
34
+ rake (12.3.0)
35
+ rspec (3.7.0)
36
+ rspec-core (~> 3.7.0)
37
+ rspec-expectations (~> 3.7.0)
38
+ rspec-mocks (~> 3.7.0)
39
+ rspec-core (3.7.1)
40
+ rspec-support (~> 3.7.0)
41
+ rspec-expectations (3.7.0)
35
42
  diff-lcs (>= 1.2.0, < 2.0)
36
- rspec-support (~> 3.5.0)
37
- rspec-mocks (3.5.0)
43
+ rspec-support (~> 3.7.0)
44
+ rspec-mocks (3.7.0)
38
45
  diff-lcs (>= 1.2.0, < 2.0)
39
- rspec-support (~> 3.5.0)
40
- rspec-support (3.5.0)
46
+ rspec-support (~> 3.7.0)
47
+ rspec-support (3.7.1)
48
+ rubocop (0.53.0)
49
+ parallel (~> 1.10)
50
+ parser (>= 2.5)
51
+ powerpack (~> 0.1)
52
+ rainbow (>= 2.2.2, < 4.0)
53
+ ruby-progressbar (~> 1.7)
54
+ unicode-display_width (~> 1.0, >= 1.0.1)
55
+ ruby-progressbar (1.9.0)
41
56
  sqlite3 (1.3.13)
42
57
  thread_safe (0.3.6)
43
- tzinfo (1.2.2)
58
+ tzinfo (1.2.5)
44
59
  thread_safe (~> 0.1)
60
+ unicode-display_width (1.3.0)
45
61
 
46
62
  PLATFORMS
47
63
  ruby
@@ -50,8 +66,9 @@ DEPENDENCIES
50
66
  bundler
51
67
  rake
52
68
  rspec
69
+ rubocop
53
70
  sortable-by!
54
71
  sqlite3
55
72
 
56
73
  BUNDLED WITH
57
- 1.14.3
74
+ 1.16.1
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2015-2018 Black Square Media
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Sortable By
2
2
 
3
+ [![Build Status](https://travis-ci.org/bsm/sortable-by.png?branch=master)](https://travis-ci.org/bsm/sortable-by)
4
+ [![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
5
+
3
6
  ActiveRecord plugin to parse the sort order from a query parameter, match against a white-list and generate a scope. Useful for [JSON-API][jsonapi] compatibility.
4
7
 
5
8
  [jsonapi]: http://jsonapi.org/format/#fetching-sorting
@@ -10,39 +13,38 @@ Add `gem 'sortable-by'` to your Gemfile.
10
13
 
11
14
  ## Usage
12
15
 
13
- Simple use cases:
16
+ Simple use case:
14
17
 
15
18
  ```ruby
16
19
  class Foo < ActiveRecord::Base
17
20
  sortable_by :title, :updated_at, default: { updated_at: :desc }
18
21
  end
19
22
 
20
- Foo.sorted_by "-updated_at,title" # => ORDER BY updated_at DESC, title ASC
21
- Foo.sorted_by "bad,title" # => ORDER BY title ASC
22
- Foo.sorted_by nil # => ORDER BY updated_at DESC
23
+ Foo.sorted_by "-updated_at,title" # => ORDER BY foos.updated_at DESC, foos.title ASC
24
+ Foo.sorted_by "bad,title" # => ORDER BY foos.title ASC
25
+ Foo.sorted_by nil # => ORDER BY foos.updated_at DESC
23
26
  ```
24
27
 
25
- ## LICENCE
28
+ Aliases and composition:
29
+
30
+ ```ruby
31
+ class Foo < ActiveRecord::Base
32
+ sortable_by semver: %i[major minor patch], default: { id: :asc }
33
+ end
26
34
 
35
+ Foo.sorted_by "semver" # => ORDER BY foos.major ASC, foos.minor ASC, foos.patch ASC
36
+ Foo.sorted_by "-semver" # => ORDER BY foos.major DESC, foos.minor DESC, foos.patch DESC
37
+ Foo.sorted_by nil # => ORDER BY foos.id ASC
27
38
  ```
28
- Copyright (c) 2015 Black Square Media
29
-
30
- Permission is hereby granted, free of charge, to any person obtaining
31
- a copy of this software and associated documentation files (the
32
- "Software"), to deal in the Software without restriction, including
33
- without limitation the rights to use, copy, modify, merge, publish,
34
- distribute, sublicense, and/or sell copies of the Software, and to
35
- permit persons to whom the Software is furnished to do so, subject to
36
- the following conditions:
37
-
38
- The above copyright notice and this permission notice shall be
39
- included in all copies or substantial portions of the Software.
40
-
41
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
42
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
43
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
44
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
45
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
46
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
47
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
39
+
40
+ Custom functions:
41
+
42
+ ```ruby
43
+ class Foo < ActiveRecord::Base
44
+ sortable_by insensitive: Arel::Nodes::NamedFunction.new('LOWER', [arel_table[:title]]), default: { id: :asc }
45
+ end
46
+
47
+ Foo.sorted_by "insensitive" # => ORDER BY LOWER(foos.title) ASC
48
+ Foo.sorted_by "-insensitive" # => ORDER BY LOWER(foos.title) DESC
49
+ Foo.sorted_by nil # => ORDER BY foos.id ASC
48
50
  ```
data/Rakefile CHANGED
@@ -1,6 +1,9 @@
1
1
  require 'bundler/setup'
2
2
  require 'bundler/gem_tasks'
3
3
  require 'rspec/core/rake_task'
4
+ require 'rubocop/rake_task'
4
5
 
5
6
  RSpec::Core::RakeTask.new(:spec)
7
+ RuboCop::RakeTask.new(:rubocop)
8
+
6
9
  task default: :spec
data/lib/sortable_by.rb CHANGED
@@ -2,8 +2,8 @@ require 'active_record'
2
2
  require 'active_support/concern'
3
3
  require 'set'
4
4
 
5
- module ActiveRecord
6
- module SortableByHelper
5
+ module ActiveRecord # :nodoc:
6
+ module SortableByHelper # :nodoc:
7
7
  extend ActiveSupport::Concern
8
8
 
9
9
  included do
@@ -11,32 +11,86 @@ module ActiveRecord
11
11
  sortable_by
12
12
  end
13
13
 
14
- module ClassMethods
14
+ def self.validate_custom_scope!(custom, original = custom)
15
+ case custom
16
+ when true, Arel::Nodes::Node, String, Symbol
17
+ nil # OK
18
+ when Array
19
+ custom.each do |v|
20
+ validate_custom_scope!(v, original)
21
+ end
22
+ else
23
+ raise ArgumentError, "Option #{original.inspect} contains unexpected values."
24
+ end
25
+ end
15
26
 
27
+ def self.order_clause(name, rank, value)
28
+ case value
29
+ when true
30
+ { name => rank }
31
+ when String, Symbol
32
+ { value => rank }
33
+ when Arel::Nodes::Node
34
+ value.send(rank)
35
+ when Array
36
+ value.map { |v| order_clause(name, rank, v) }
37
+ end
38
+ end
39
+
40
+ module ClassMethods # :nodoc:
41
+ # Copy _sortable_by_scope_options on inheritance.
42
+ def inherited(base) #:nodoc:
43
+ base._sortable_by_scope_options = _sortable_by_scope_options.deep_dup
44
+ super
45
+ end
46
+
47
+ # Provide a whitelist and options for sorted_by
16
48
  def sortable_by(*whitelist)
49
+ self._sortable_by_scope_options ||= { scopes: {}, default: { id: :asc } }
50
+
17
51
  opts = whitelist.extract_options!
18
- opts[:default] ||= {id: :asc}
19
- self._sortable_by_scope_options = opts.merge(whitelist: whitelist.map(&:to_s).to_set)
52
+ default = opts.delete(:default)
53
+ self._sortable_by_scope_options[:default] = default if default
54
+
55
+ whitelist.each do |attr|
56
+ self._sortable_by_scope_options[:scopes][attr.to_s] = true
57
+ end
58
+ opts.each do |attr, custom|
59
+ SortableByHelper.validate_custom_scope!(custom)
60
+ self._sortable_by_scope_options[:scopes][attr.to_s] = custom
61
+ end
20
62
  end
21
63
 
22
64
  # @param [String] expr the sort expr
23
65
  # @return [ActiveRecord::Relation] the scoped relation
24
66
  def sorted_by(expr)
25
- options = {}
26
- expr.to_s.split(',').each do |name|
67
+ relation = self
68
+ matches = expr.to_s.split(',').count do |name|
27
69
  name.strip!
70
+
28
71
  rank = :asc
29
- rank, name = :desc, name[1..-1] if name[0] == '-'
30
- options[name.to_sym] = rank if self._sortable_by_scope_options[:whitelist].include?(name)
72
+ if name[0] == '-'
73
+ rank = :desc
74
+ name = name[1..-1]
75
+ end
76
+
77
+ value = self._sortable_by_scope_options[:scopes][name]
78
+ clause = SortableByHelper.order_clause(name, rank, value)
79
+ relation = relation.order(clause) if clause
80
+ clause
81
+ end
82
+
83
+ if matches.zero?
84
+ default = self._sortable_by_scope_options[:default]
85
+ relation = relation.order(default)
31
86
  end
32
- options = self._sortable_by_scope_options[:default] if options.empty?
33
- order(options)
34
- end
35
87
 
88
+ relation
89
+ end
36
90
  end
37
91
  end
38
92
 
39
- class Base
93
+ class Base # :nodoc:
40
94
  include SortableByHelper
41
95
  end
42
96
  end
data/sortable-by.gemspec CHANGED
@@ -1,7 +1,7 @@
1
- # -*- encoding: utf-8 -*-
1
+
2
2
  Gem::Specification.new do |s|
3
3
  s.name = 'sortable-by'
4
- s.version = '0.9.0'
4
+ s.version = '0.10.0'
5
5
  s.authors = ['Dimitrij Denissenko']
6
6
  s.email = ['dimitrij@blacksquaremedia.com']
7
7
  s.summary = 'Generate white-listed sort scopes from URL parameter values'
@@ -9,16 +9,17 @@ Gem::Specification.new do |s|
9
9
  s.homepage = 'https://github.com/bsm/sortable-by'
10
10
  s.license = 'MIT'
11
11
 
12
- s.files = `git ls-files -z`.split("\x0").reject {|f| f.match(%r{^spec/}) }
12
+ s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^spec/}) }
13
13
  s.test_files = `git ls-files -z -- spec/*`.split("\x0")
14
14
  s.require_paths = ['lib']
15
- s.required_ruby_version = '>= 1.9.3'
15
+ s.required_ruby_version = '>= 2.2.0'
16
16
 
17
- s.add_dependency 'activesupport'
18
17
  s.add_dependency 'activerecord'
18
+ s.add_dependency 'activesupport'
19
19
 
20
20
  s.add_development_dependency 'bundler'
21
21
  s.add_development_dependency 'rake'
22
22
  s.add_development_dependency 'rspec'
23
+ s.add_development_dependency 'rubocop'
23
24
  s.add_development_dependency 'sqlite3'
24
25
  end
@@ -1,23 +1,28 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper'
2
2
 
3
3
  describe ActiveRecord::SortableByHelper do
4
-
5
4
  it 'should have config' do
6
- expect(Foo._sortable_by_scope_options).to eq(default: {title: :asc}, whitelist: Set.new(["title", "age"]))
7
- expect(Bar._sortable_by_scope_options).to eq(default: {id: :asc}, whitelist: Set.new)
5
+ expect(Foo._sortable_by_scope_options).to include(:default, :scopes)
6
+ expect(Foo._sortable_by_scope_options[:default]).to eq(title: :asc)
7
+ expect(Foo._sortable_by_scope_options[:scopes]).to be_instance_of(Hash)
8
+ expect(Foo._sortable_by_scope_options[:scopes]).to include('title', 'age', 'semver', 'insensitive')
9
+ expect(Bar._sortable_by_scope_options).to eq(default: { id: :asc }, scopes: {})
8
10
  end
9
11
 
10
12
  it 'should generate scopes' do
11
- expect(Foo.sorted_by("title").pluck(:title)).to eq(["A", "B", "B", "C"])
12
- expect(Foo.sorted_by("-title").pluck(:title)).to eq(["C", "B", "B", "A"])
13
- expect(Foo.sorted_by("age,title").pluck(:title)).to eq(["B", "A", "B", "C"])
14
- expect(Foo.sorted_by("invalid , -age").pluck(:title)).to eq(["C", "B", "A", "B"])
15
- expect(Foo.sorted_by("").pluck(:title)).to eq(["A", "B", "B", "C"])
16
- expect(Foo.sorted_by(nil).pluck(:title)).to eq(["A", "B", "B", "C"])
13
+ expect(Foo.sorted_by('title').pluck(:title)).to eq(%w[A B C b])
14
+ expect(Foo.sorted_by('-title').pluck(:title)).to eq(%w[b C B A])
15
+ expect(Foo.sorted_by('age,title').pluck(:title)).to eq(%w[B A b C])
16
+ expect(Foo.sorted_by('invalid , -age').pluck(:title)).to eq(%w[C b A B])
17
+ expect(Foo.sorted_by('insensitive,age').pluck(:title)).to eq(%w[A B b C])
18
+ expect(Foo.sorted_by('-insensitive,age').pluck(:title)).to eq(%w[C B b A])
19
+ expect(Foo.sorted_by('semver').pluck(:title)).to eq(%w[b B C A])
20
+ expect(Foo.sorted_by('-semver').pluck(:title)).to eq(%w[A C B b])
21
+ expect(Foo.sorted_by('').pluck(:title)).to eq(%w[A B C b])
22
+ expect(Foo.sorted_by(nil).pluck(:title)).to eq(%w[A B C b])
17
23
 
18
- expect(Bar.sorted_by("").pluck(:title)).to eq(["Y", "X"])
19
- expect(Bar.sorted_by("title").pluck(:title)).to eq(["Y", "X"])
20
- expect(Bar.where(title: "X").sorted_by("title").pluck(:title)).to eq(["X"])
24
+ expect(Bar.sorted_by('').pluck(:title)).to eq(%w[Y X])
25
+ expect(Bar.sorted_by('title').pluck(:title)).to eq(%w[Y X])
26
+ expect(Bar.where(title: 'X').sorted_by('title').pluck(:title)).to eq(%w[X])
21
27
  end
22
-
23
28
  end
data/spec/spec_helper.rb CHANGED
@@ -1,29 +1,42 @@
1
- ENV['RACK_ENV'] ||= "test"
1
+ ENV['RACK_ENV'] ||= 'test'
2
2
  require 'sortable-by'
3
3
  require 'rspec'
4
4
 
5
- ActiveRecord::Base.configurations["test"] = { 'adapter' => 'sqlite3', 'database' => ":memory:" }
5
+ ActiveRecord::Base.configurations['test'] = {
6
+ 'adapter' => 'sqlite3',
7
+ 'database' => ':memory:',
8
+ }
6
9
  ActiveRecord::Base.establish_connection :test
7
10
  ActiveRecord::Base.connection.create_table :foos do |t|
8
11
  t.string :title
9
12
  t.integer :age
13
+
14
+ t.integer :major
15
+ t.integer :minor
10
16
  end
11
17
 
12
18
  ActiveRecord::Base.connection.create_table :bars do |t|
13
19
  t.string :title
14
20
  end
15
21
 
22
+ ActiveRecord::Base.connection.create_table :boos do |t|
23
+ t.string :title
24
+ end
25
+
16
26
  class Foo < ActiveRecord::Base
17
- sortable_by :title, :age, default: {title: :asc}
27
+ sortable_by :title, :age,
28
+ insensitive: Arel::Nodes::NamedFunction.new('LOWER', [arel_table[:title]]),
29
+ semver: %i[major minor],
30
+ default: { title: :asc }
18
31
  end
19
32
 
20
33
  class Bar < ActiveRecord::Base
21
34
  end
22
35
 
23
- Foo.create! title: 'A', age: 25
24
- Foo.create! title: 'B', age: 24
25
- Foo.create! title: 'B', age: 26
26
- Foo.create! title: 'C', age: 27
36
+ Foo.create! title: 'A', age: 25, major: 10, minor: 1
37
+ Foo.create! title: 'B', age: 24, major: 8, minor: 3
38
+ Foo.create! title: 'b', age: 26, major: 0, minor: 2
39
+ Foo.create! title: 'C', age: 27, major: 8, minor: 6
27
40
 
28
41
  Bar.create! title: 'Y'
29
42
  Bar.create! title: 'X'
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sortable-by
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dimitrij Denissenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-23 00:00:00.000000000 Z
11
+ date: 2018-03-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: activesupport
14
+ name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: activerecord
28
+ name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: sqlite3
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -102,9 +116,11 @@ extensions: []
102
116
  extra_rdoc_files: []
103
117
  files:
104
118
  - ".gitignore"
119
+ - ".rubocop.yml"
105
120
  - ".travis.yml"
106
121
  - Gemfile
107
122
  - Gemfile.lock
123
+ - LICENSE
108
124
  - README.md
109
125
  - Rakefile
110
126
  - lib/sortable-by.rb
@@ -124,7 +140,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
124
140
  requirements:
125
141
  - - ">="
126
142
  - !ruby/object:Gem::Version
127
- version: 1.9.3
143
+ version: 2.2.0
128
144
  required_rubygems_version: !ruby/object:Gem::Requirement
129
145
  requirements:
130
146
  - - ">="
@@ -132,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
148
  version: '0'
133
149
  requirements: []
134
150
  rubyforge_project:
135
- rubygems_version: 2.6.8
151
+ rubygems_version: 2.7.3
136
152
  signing_key:
137
153
  specification_version: 4
138
154
  summary: Generate white-listed sort scopes from URL parameter values