active_record_batteries 1.0.0 → 2.0.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: 627d133bd03a971733af4b6c13f785c7818fc091
4
- data.tar.gz: da576d73fc56b2908ee439d57602f16190393d05
2
+ SHA256:
3
+ metadata.gz: 159a2a4a4681bde175fe4f840828e8cccc02730a920dfacfc90357dfb46dea45
4
+ data.tar.gz: 2688b3784eb100bd085a441a7ff75f60f26856d8fe2196af511ed2b6f6c6e1bd
5
5
  SHA512:
6
- metadata.gz: dd346dedc4c333d84854dbf6ba7c207d64ee1c33cd27f3c14f7ed1decba4e66c64a86f0931616f03e05d811ec49caaf33e6b2e61dde007d20867f7f8e5859300
7
- data.tar.gz: a9d073f004d367713145512ef781600970b3b39f177e29fa6c199836d0f37cf4132efc3c76e32edd6ae8a2dc665fd56a6a2ac39126a7d29c1cd578ac71e87fd9
6
+ metadata.gz: 1b70cd34525c873fe0ea4b554445e8139dc21ee1f491077952b5168ba5f814308515d8a04b8b47442a1101c5dfb673227ec4853e80dabc3cb9f8c5f1980dd866
7
+ data.tar.gz: 8426aa0d792c5c5c9682f8768df908509d683fa6f6bb459acd7a62f4fc529c3965f449d86ba0fa17fcc9d70172d10a55697bb52b8b4df58676c9d037ef83f860
@@ -1,7 +1,5 @@
1
1
  module ActiveRecordBatteries
2
2
  end
3
3
 
4
- require 'active_record_batteries/engine'
5
4
  require 'active_record_batteries/version'
6
5
  require 'active_record_batteries/concerns'
7
- require 'active_record_batteries/loader'
@@ -16,7 +16,7 @@ module ActiveRecordBatteries
16
16
  end
17
17
 
18
18
  module ClassMethods
19
- def filter_add(method_name, callable = nil)
19
+ def filter_by(method_name, callable = nil)
20
20
  scope(method_name, callable) if callable
21
21
  filters[method_name] = method_name
22
22
  end
@@ -5,11 +5,15 @@ module ActiveRecordBatteries
5
5
 
6
6
  included do
7
7
  # Default items per page
8
- page_items 25
8
+ items_per_page 25
9
9
 
10
- scope :paginate, lambda { |page, page_items = @page_items|
11
- limit(page_items)
12
- .offset(([page.to_i, 1].max - 1) * page_items)
10
+ klass = self
11
+
12
+ scope :paginate, lambda { |page, items_per_page = nil|
13
+ items_per_page ||= klass.instance_variable_get(:@items_per_page)
14
+
15
+ limit(items_per_page)
16
+ .offset(([page.to_i, 1].max - 1) * items_per_page)
13
17
  .extending do
14
18
 
15
19
  def current_page
@@ -42,13 +46,13 @@ module ActiveRecordBatteries
42
46
  end
43
47
 
44
48
  module ClassMethods
45
- def page_items(items)
46
- @page_items = items
49
+ def items_per_page(items)
50
+ @items_per_page = items
47
51
  end
48
52
 
49
- def pages(page_items = @page_items)
53
+ def pages(items_per_page = @items_per_page)
50
54
  (all.except(:offset, :limit, :order, :includes)
51
- .distinct(:id).count / page_items.to_f).ceil
55
+ .distinct(:id).count / items_per_page.to_f).ceil
52
56
  end
53
57
  end
54
58
  end
@@ -1,3 +1,3 @@
1
1
  module ActiveRecordBatteries
2
- VERSION = "1.0.0"
2
+ VERSION = "2.0.0"
3
3
  end
@@ -107,7 +107,7 @@ RSpec.describe ActiveRecordBatteries do
107
107
 
108
108
  context "Paginable" do
109
109
  it "should set items per page" do
110
- expect(Author.page_items(2)).to eql(2)
110
+ expect(Author.items_per_page(2)).to eql(2)
111
111
  end
112
112
 
113
113
  it "should count pages" do
@@ -147,54 +147,14 @@ RSpec.describe ActiveRecordBatteries do
147
147
  end
148
148
  end
149
149
 
150
- context "RelationshipScopes" do
151
- before :all do
152
- Author.create(name: "articleless")
153
- end
154
-
155
- # Scopes should be added
156
- [ :with_articles, :include_articles, :and_articles,
157
- :pload_articles, :eload_articles ].each do |method|
158
- it "should respond to #{method}" do
159
- expect(Author.respond_to?(method)).to be true
160
- end
161
- end
162
-
163
- it "should not have articles preloaded" do
164
- author = Author.first
165
- expect(author.articles.loaded?).to be false
166
- end
167
-
168
- it "should have articles included" do
169
- author = Author.include_articles.first
170
-
171
- expect(author.articles.loaded?).to be true
172
- end
173
-
174
- it "should have articles preloaded" do
175
- author = Author.pload_articles.first
176
-
177
- expect(author.articles.loaded?).to be true
178
- end
179
-
180
- it "should have articles eager loaded" do
181
- author = Author.eload_articles.first
182
-
183
- expect(author.articles.loaded?).to be true
184
- end
185
-
186
- it "should join but not preload" do
187
- author = Author.with_articles.first
188
-
189
- expect(author.articles.loaded?).to be false
190
- end
191
-
192
- it "should inner join" do
193
- expect(Author.and_articles.where(name: "articleless")).to be_empty
150
+ context "Sluggable" do
151
+ it "should have a slug" do
152
+ expect(Article.create(title: "Hello, world").slug).to eq("hello-world")
194
153
  end
195
154
 
196
- it "should not inner join" do
197
- expect(Author.pload_articles.where(name: "articleless")).not_to be_empty
155
+ it "should qualify slugs" do
156
+ expect { Article.create!(title: "Hello, world") }.to_not raise_error
157
+ expect { Article.create!(title: "Hello, world") }.to_not raise_error
198
158
  end
199
159
  end
200
160
  end
@@ -32,24 +32,27 @@ ActiveRecord::Schema.define do
32
32
  end
33
33
 
34
34
  class Author < ActiveRecord::Base
35
- batteries! :sluggable, :paginable, :filterable, :relationship_scopes
35
+ include ActiveRecordBatteries::Concerns::Sluggable,
36
+ ActiveRecordBatteries::Concerns::Paginable,
37
+ ActiveRecordBatteries::Concerns::Filterable
36
38
 
37
39
  has_many :articles
38
40
 
39
- filter_add :by_slug
40
-
41
- relationship_scopes :articles
41
+ filter_by :by_slug
42
42
  end
43
43
 
44
44
  class Article < ActiveRecord::Base
45
- batteries! :sluggable, :paginable, :filterable, :relationship_scopes, :deletable
45
+ include ActiveRecordBatteries::Concerns::Sluggable,
46
+ ActiveRecordBatteries::Concerns::Paginable,
47
+ ActiveRecordBatteries::Concerns::Filterable,
48
+ ActiveRecordBatteries::Concerns::Deletable
46
49
 
47
50
  belongs_to :author
48
51
 
49
52
  slug_base_column :title
50
53
 
51
- filter_add :by_slug
52
- filter_add :by_title, ->(title) { where(title: title) }
54
+ filter_by :by_slug
55
+ filter_by :by_title, ->(title) { where(title: title) }
53
56
 
54
- page_items 5
57
+ items_per_page 5
55
58
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record_batteries
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Francisco Soto
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-28 00:00:00.000000000 Z
11
+ date: 2019-02-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 4.2.1
19
+ version: '5'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 4.2.1
26
+ version: '5'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sqlite3
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 1.3.10
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 1.3.10
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec-rails
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  description: Several small active record modules to empower models in a simple way.
56
56
  email:
57
- - ebobby@gmail.com
57
+ - ebobby@ebobby.org
58
58
  executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
@@ -66,12 +66,8 @@ files:
66
66
  - lib/active_record_batteries/concerns/deletable.rb
67
67
  - lib/active_record_batteries/concerns/filterable.rb
68
68
  - lib/active_record_batteries/concerns/paginable.rb
69
- - lib/active_record_batteries/concerns/relationship_scopes.rb
70
69
  - lib/active_record_batteries/concerns/sluggable.rb
71
- - lib/active_record_batteries/engine.rb
72
- - lib/active_record_batteries/loader.rb
73
70
  - lib/active_record_batteries/version.rb
74
- - lib/tasks/active_record_batteries_tasks.rake
75
71
  - spec/active_record_batteries_spec.rb
76
72
  - spec/spec_helper.rb
77
73
  homepage: https://github.com/ebobby/active_record_batteries
@@ -93,8 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
93
89
  - !ruby/object:Gem::Version
94
90
  version: '0'
95
91
  requirements: []
96
- rubyforge_project:
97
- rubygems_version: 2.4.5
92
+ rubygems_version: 3.0.1
98
93
  signing_key:
99
94
  specification_version: 4
100
95
  summary: ActiveRecord with Batteries. Extensions to make life easier.
@@ -1,24 +0,0 @@
1
- module ActiveRecordBatteries
2
- module Concerns
3
- module RelationshipScopes
4
- extend ActiveSupport::Concern
5
-
6
- module ClassMethods
7
- def relationship_scopes(relationship, suffix = nil)
8
- suffix ||= relationship
9
-
10
- with_scope_name = "with_#{ suffix }".to_sym
11
- include_scope_name = "include_#{ suffix }".to_sym
12
-
13
- scope with_scope_name, -> { joins(relationship) }
14
- scope include_scope_name, -> { includes(relationship) }
15
- scope "and_#{ suffix }".to_sym, -> { send(with_scope_name).send(include_scope_name) }
16
- scope "pload_#{ suffix }".to_sym, -> { preload(relationship) }
17
- scope "eload_#{ suffix }".to_sym, -> { eager_load(relationship) }
18
-
19
- nil
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,5 +0,0 @@
1
- module ActiveRecordBatteries
2
- class Engine < ::Rails::Engine
3
- isolate_namespace ActiveRecordBatteries
4
- end
5
- end
@@ -1,19 +0,0 @@
1
- module ActiveRecordBatteries
2
- module Loader
3
- extend ActiveSupport::Concern
4
-
5
- module ClassMethods
6
- def batteries! (*modules)
7
- modules = modules.is_a?(Array) ? modules : [ modules ]
8
-
9
- modules.each.map{|i| i.to_s.camelize }.each do |mod|
10
- include ActiveRecordBatteries::Concerns.const_get(mod)
11
- end
12
-
13
- nil
14
- end
15
- end
16
-
17
- ActiveRecord::Base.send(:include, self)
18
- end
19
- end
@@ -1,4 +0,0 @@
1
- # desc "Explaining what the task does"
2
- # task :active_record_batteries do
3
- # # Task goes here
4
- # end