active_flag 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 26c979d2d1cfeabb98603b90aaa55a4f361a98a3
4
- data.tar.gz: f04838610984ff62b6700a3d7623a49fe9b21ab6
2
+ SHA256:
3
+ metadata.gz: f156db5cdf6e7c81eeec5d35fe84a5bf52d3543e1a274eb120ebe5961c3a2aae
4
+ data.tar.gz: 800c0c276ea269197360587b2b091fbb4208bf1312949eba7fb41568bea6b684
5
5
  SHA512:
6
- metadata.gz: cca41db4644daead0fb4acb3319b7fd6dbd10b5eb991d813a699e246ff565d0bc449a4eedb162f5d27a76c01e935f8f0e785fd0f5c1f62ec4a6dfb828cb9b31d
7
- data.tar.gz: 211fb66733b87fc769ff49d82c609b0f9caf3fce7151cd8ec980ff6f990b5397ec2395482e313b0d8b70917e622c59095f07323755ae2237b934bcc5005d258e
6
+ metadata.gz: e0756d76fa4f609f39858f482a3f60cc429446fa8e3781ae157554e9cb5a6eb788663d3a46a32eaf360750083f5b771fdcffdbe4bb96c8166026e1f2e03bf03f
7
+ data.tar.gz: 4a1a0a5e0ba214b08977d04aa8b1f9ab41ee2a8906f968d05da05da1e35066e7208853405493073ff61cdbcd0972abedd2f3440f4837a0ff6f398b7a0c26ab0e
@@ -1,5 +1,8 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
- - 2.3.3
4
+ - 2.5.3
5
5
  before_install: gem install bundler -v 1.13.6
6
+ gemfile:
7
+ - gemfiles/5.2.gemfile
8
+ - gemfiles/6.0.gemfile
data/README.md CHANGED
@@ -9,6 +9,10 @@ Perfect solution to store multiple boolean values such as preferences, notificat
9
9
  * **Single column to group multiple boolean values.** You don't need to have many separate columns. You don't even need a migration when you add a new flag item to the list.
10
10
  * **Fast bitwise operations.** `WHERE languages & 3 > 0` is faster than `WHERE (english = true) OR (spanish = true) OR ...`
11
11
 
12
+ If you want a simple enum column, take a look at [EnumAccessor](https://github.com/kenn/enum_accessor).
13
+
14
+ If you need to work with huge bit arrays, take a look at [Bitwise](https://github.com/kenn/bitwise).
15
+
12
16
  ## Usage
13
17
 
14
18
  ```ruby
@@ -16,6 +20,8 @@ class Profile < ActiveRecord::Base
16
20
  flag :languages, [:english, :spanish, :chinese, :french, :japanese]
17
21
  end
18
22
 
23
+ # {:english=>1, :spanish=>2, :chinese=>4, :french=>8, :japanese=>16 }
24
+
19
25
  # Instance methods
20
26
  profile.languages #=> #<ActiveFlag::Value: {:english, :japanese}>
21
27
  profile.languages.english? #=> true
@@ -30,8 +36,12 @@ profile.languages.to_a #=> [:english, :spanish]
30
36
  profile.languages = [:spanish, :japanese] # Direct assignment that works with forms
31
37
 
32
38
  # Class methods
33
- Profile.where_languages(:french, :spanish) #=> SELECT * FROM profiles WHERE languages & 10 > 0
34
39
  Profile.languages.maps #=> {:english=>1, :spanish=>2, :chinese=>4, :french=>8, :japanese=>16 }
40
+ Profile.languages.humans #=> {:english=>"English", :spanish=>"Spanish", :chinese=>"Chinese", :french=>"French", :japanese=>"Japanese"}
41
+ Profile.languages.pairs #=> {"English"=>:english, "Spanish"=>:spanish, "Chinese"=>:chinese, "French"=>:french, "Japanese"=>:japanese}
42
+
43
+ # Scope methods
44
+ Profile.where_languages(:french, :spanish) #=> SELECT * FROM profiles WHERE languages & 10 > 0
35
45
  Profile.languages.set_all!(:chinese) #=> UPDATE "profiles" SET languages = COALESCE(languages, 0) | 4
36
46
  Profile.languages.unset_all!(:chinese) #=> UPDATE "profiles" SET languages = COALESCE(languages, 0) & ~4
37
47
  ```
@@ -59,7 +69,7 @@ add_column :users, :languages, :integer, null: false, default: 0, limit: 8
59
69
  For a querying purpose, use `where_[column]` scope.
60
70
 
61
71
  ```ruby
62
- Profile.where_languages(:french) #=> SELECT * FROM profiles WHERE languages = 8
72
+ Profile.where_languages(:french) #=> SELECT * FROM profiles WHERE languages & 8 > 0
63
73
  ```
64
74
 
65
75
  Also takes multiple values.
@@ -73,7 +83,7 @@ By default, it searches with `or` operation, so the query above returns profiles
73
83
  If you want to change it to `and` operation, you can specify:
74
84
 
75
85
  ```ruby
76
- Profile.where_languages(:french, :spanish, op: :and)
86
+ Profile.where_languages(:french, :spanish, op: :and) #=> SELECT * FROM profiles WHERE languages = 10
77
87
  ```
78
88
 
79
89
  ## Translation
@@ -110,10 +120,12 @@ Thanks to the translation support, forms just work as you would expect with the
110
120
 
111
121
  ```ruby
112
122
  # With FormBuilder
123
+
113
124
  = form_for(@profile) do |f|
114
125
  = f.collection_check_boxes :languages, Profile.languages.pairs
115
126
 
116
127
  # With SimpleForm
128
+
117
129
  = simple_form_for(@profile) do |f|
118
130
  = f.input :languages, as: :check_boxes, collection: Profile.languages.pairs
119
131
  ```
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ['lib']
21
21
 
22
- spec.add_runtime_dependency 'activerecord', '< 6'
22
+ spec.add_runtime_dependency 'activerecord', '>= 5'
23
23
  spec.add_development_dependency 'bundler'
24
24
  spec.add_development_dependency 'rake'
25
25
  spec.add_development_dependency 'minitest'
@@ -0,0 +1,12 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "activerecord", "~> 5.2"
4
+
5
+ group :development, :test do
6
+ gem "bundler"
7
+ gem "rake"
8
+ gem "minitest"
9
+ gem "sqlite3"
10
+ end
11
+
12
+ gemspec :path => "../"
@@ -0,0 +1,12 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "activerecord", "~> 6"
4
+
5
+ group :development, :test do
6
+ gem "bundler"
7
+ gem "rake"
8
+ gem "minitest"
9
+ gem "sqlite3"
10
+ end
11
+
12
+ gemspec :path => "../"
@@ -1,3 +1,3 @@
1
1
  module ActiveFlag
2
- VERSION = '1.4.0'
2
+ VERSION = '1.5.0'
3
3
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_flag
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kenn Ejima
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-10 00:00:00.000000000 Z
11
+ date: 2019-09-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "<"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '6'
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: '6'
26
+ version: '5'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -95,6 +95,8 @@ files:
95
95
  - active_flag.gemspec
96
96
  - bin/console
97
97
  - bin/setup
98
+ - gemfiles/5.2.gemfile
99
+ - gemfiles/6.0.gemfile
98
100
  - lib/active_flag.rb
99
101
  - lib/active_flag/definition.rb
100
102
  - lib/active_flag/railtie.rb
@@ -118,8 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
120
  - !ruby/object:Gem::Version
119
121
  version: '0'
120
122
  requirements: []
121
- rubyforge_project:
122
- rubygems_version: 2.6.14
123
+ rubygems_version: 3.0.1
123
124
  signing_key:
124
125
  specification_version: 4
125
126
  summary: Bit array for ActiveRecord