active_flag 1.4.0 → 1.5.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: 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