ketsuban 0.1.0 → 0.2.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
- SHA256:
3
- metadata.gz: b5d89bebcec14b8490d3f391c948adcbd00da23ca714b083d510cffec5581555
4
- data.tar.gz: c1dd1c10919e0f6d669075edc9cccaae301ee3058eb749bd2a0c0203502de8df
2
+ SHA1:
3
+ metadata.gz: 4f7c4a677493a4b2a693280d0db1107aec0932ba
4
+ data.tar.gz: 2c44b0a66a5bf05bd135a89da19a8597f2591e37
5
5
  SHA512:
6
- metadata.gz: ec071ff04dfe02ae6bca961621041a577fa960825daef6f80383ec8f5352ccfc25aa7ea5346fcc1402689290c71cc7467d4d7bd7f96e0bcefb016048f3f31339
7
- data.tar.gz: 801b5cb07dd669688936fb471d04faf0166fe06e029a7a055be3a3b5c5ba8e81e0c7fc5567e3b9fc13b68a59702f0c811499ba4647e2238161f063c755c6e15e
6
+ metadata.gz: d49afbf4e5288f84b0eb6a20bd36c452b24b9608843f8995dfcbdf36b06e7dcdf38c753e473aa966f670a1f5fe9adf32b67ec06a7b24b5d1fa12439e90351d0e
7
+ data.tar.gz: 4f1802118a2ee05cebfe50c68adb4c94a2aa410180ad772908ad927ebeb41101b2d699d837ff6bd99562a07844203347944a1e428e2f678b8f35c8188f0c8c7b
data/README.md CHANGED
@@ -1,3 +1,6 @@
1
+ [![https://badge.fury.io/rb/ketsuban.svg](https://badge.fury.io/rb/ketsuban.svg)](https://rubygems.org/gems/ketsuban)
2
+ [![Build Status](https://travis-ci.org/oieioi/ketsuban.svg?branch=master)](https://travis-ci.org/oieioi/ketsuban)
3
+
1
4
  # Ketsuban
2
5
 
3
6
  Skip unlucky numbers for ActiveRecord surrogate key.
@@ -7,18 +10,30 @@ Skip unlucky numbers for ActiveRecord surrogate key.
7
10
  ```ruby
8
11
  class User < ApplicationRecord
9
12
  include Ketsuban
10
- unlucky_numbers [4, 13]
13
+ unlucky_numbers [4, 5]
11
14
  end
15
+
16
+ 5.times.map { User.create.id }
17
+ # => [1, 2, 3, 6, 7]
12
18
  ```
13
19
 
20
+ or
21
+
14
22
  ```ruby
15
- 13.times.map { User.create.id }
16
- # => 1,2,3,5,6,7,8,9,10,11,12,14,15
23
+ class User < ApplicationRecord
24
+ include Ketsuban
25
+ unlucky_numbers -> next_id { next_id.odd? }
26
+ end
27
+
28
+ 5.times.map { User.create.id }
29
+ # => [2, 4, 6, 8, 10]
17
30
  ```
18
31
 
32
+
33
+
19
34
  ## TODO
20
35
 
21
- - Support sqlite
36
+ - Support sqlite3
22
37
 
23
38
  ## License
24
39
 
@@ -6,11 +6,7 @@ module Ketsuban
6
6
  end
7
7
 
8
8
  def fetch_next_id
9
- maximum_id&.next || 1
10
- end
11
-
12
- def maximum_id
13
- @model_class.maximum(@model_class.primary_key)
9
+ @model_class.maximum(@model_class.primary_key)&.next || 1
14
10
  end
15
11
 
16
12
  def generate_next_id(now_id)
@@ -1,19 +1,32 @@
1
1
  require_relative './adapter'
2
+ require_relative './utils'
2
3
 
3
4
  module Ketsuban
4
5
  extend ActiveSupport::Concern
5
6
 
6
- included do
7
- class << self
8
- @unlucky_numbers = [4, 13, 42, 44, 400, 404, 444, 503]
7
+ module ClassMethod
8
+ @unlucky_numbers = []
9
9
 
10
- def unlucky_numbers(news = nil)
11
- return @unlucky_numbers if news.nil?
10
+ def unlucky_numbers(news = nil)
11
+ return @unlucky_numbers if news.nil?
12
12
 
13
- @unlucky_numbers = news.sort
13
+ self.unlucky_numbers = news
14
+ end
15
+
16
+ def unlucky_numbers=(news)
17
+ case news.class.to_s
18
+ when 'Array' then @unlucky_numbers = news.sort
19
+ when 'Proc' then @unlucky_numbers = Ketsuban::Utils.includenize!(news)
20
+ else raise "Not support #{news.class} for ketsuban args"
14
21
  end
22
+ end
15
23
 
16
- alias_method :ketsuban, :unlucky_numbers
24
+ alias ketsuban unlucky_numbers
25
+ end
26
+
27
+ included do
28
+ class << self
29
+ include ClassMethod
17
30
  end
18
31
 
19
32
  before_create do
@@ -0,0 +1,14 @@
1
+ module Ketsuban
2
+ module Utils
3
+ module_function
4
+
5
+ def includenize!(func)
6
+ func.instance_eval do
7
+ def include?(next_id)
8
+ call(next_id)
9
+ end
10
+ end
11
+ func
12
+ end
13
+ end
14
+ end
@@ -1,3 +1,3 @@
1
1
  module Ketsuban
2
- VERSION = '0.1.0'.freeze
2
+ VERSION = '0.2.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ketsuban
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - oieioi
@@ -94,7 +94,7 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
- description: "\U0001F340 Skip unlucky numbers for ActiveRecord surrogate key"
97
+ description: Skip unlucky numbers for ActiveRecord surrogate key
98
98
  email:
99
99
  - atsuinatsu.samuifuyu@gmail.com
100
100
  executables: []
@@ -111,6 +111,7 @@ files:
111
111
  - lib/ketsuban/adapters/postgresql_adapter.rb
112
112
  - lib/ketsuban/base.rb
113
113
  - lib/ketsuban/railtie.rb
114
+ - lib/ketsuban/utils.rb
114
115
  - lib/ketsuban/version.rb
115
116
  - lib/tasks/ketsuban_tasks.rake
116
117
  homepage: https://github.com/oieioi/ketsuban
@@ -125,7 +126,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
125
126
  requirements:
126
127
  - - ">="
127
128
  - !ruby/object:Gem::Version
128
- version: '0'
129
+ version: '2.4'
129
130
  required_rubygems_version: !ruby/object:Gem::Requirement
130
131
  requirements:
131
132
  - - ">="
@@ -133,8 +134,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
134
  version: '0'
134
135
  requirements: []
135
136
  rubyforge_project:
136
- rubygems_version: 2.7.6
137
+ rubygems_version: 2.6.14
137
138
  signing_key:
138
139
  specification_version: 4
139
- summary: "\U0001F340 Skip unlucky numbers for ActiveRecord surrogate key"
140
+ summary: Skip unlucky numbers for ActiveRecord surrogate key
140
141
  test_files: []