ar_rollout 0.0.8 → 0.0.9
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.
- data/lib/ar_rollout.rb +11 -7
- data/lib/ar_rollout/rollout.rb +5 -3
- data/lib/ar_rollout/version.rb +1 -1
- data/lib/tasks/ar_rollout_tasks.rake +5 -1
- metadata +3 -3
data/lib/ar_rollout.rb
CHANGED
@@ -11,26 +11,31 @@ module ArRollout
|
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
-
def self.activate_user(feature
|
14
|
+
def self.activate_user(feature, user)
|
15
15
|
return false if feature.nil? || user.nil?
|
16
16
|
res_id = [Fixnum, String].include?(user.class) ? user : user.id
|
17
17
|
Rollout.find_or_create_by_name_and_user_id(feature, res_id)
|
18
18
|
end
|
19
19
|
|
20
|
-
def self.deactivate_user(feature
|
20
|
+
def self.deactivate_user(feature, user)
|
21
21
|
res_id = [Fixnum, String].include?(user.class) ? user : user.id
|
22
22
|
Rollout.find_all_by_name_and_user_id(feature, res_id).map(&:destroy)
|
23
23
|
end
|
24
24
|
|
25
|
-
def self.activate_group(feature
|
25
|
+
def self.activate_group(feature, group)
|
26
26
|
return false if feature.nil? || group.nil?
|
27
27
|
Rollout.find_or_create_by_name_and_group(feature, group)
|
28
28
|
end
|
29
29
|
|
30
|
-
def self.deactivate_group(feature
|
30
|
+
def self.deactivate_group(feature, group)
|
31
31
|
Rollout.find_all_by_name_and_group(feature, group).map(&:destroy)
|
32
32
|
end
|
33
33
|
|
34
|
+
def self.activate_percentage(feature, percentage)
|
35
|
+
Rollout.where("name = ? and percentage is not null", feature).destroy_all
|
36
|
+
Rollout.create(name: feature, percentage: percentage)
|
37
|
+
end
|
38
|
+
|
34
39
|
def self.deactivate_all(feature)
|
35
40
|
Rollout.find_all_by_name(feature).map(&:destroy)
|
36
41
|
end
|
@@ -72,10 +77,9 @@ private
|
|
72
77
|
end
|
73
78
|
|
74
79
|
def self.active_percentage(feature)
|
75
|
-
Rollout.where('"name" = ? and "percentage" is not null', feature).
|
80
|
+
Rollout.select("percentage").where('"name" = ? and "percentage" is not null', feature).first
|
76
81
|
end
|
77
82
|
|
78
|
-
|
79
83
|
end
|
80
84
|
|
81
85
|
ActionController::Base.send :include, ArRollout::Controller::Helpers
|
@@ -84,4 +88,4 @@ class RolloutTask < Rails::Railtie
|
|
84
88
|
rake_tasks do
|
85
89
|
Dir[File.join(File.dirname(__FILE__),'tasks/*.rake')].each { |f| load f }
|
86
90
|
end
|
87
|
-
end
|
91
|
+
end
|
data/lib/ar_rollout/rollout.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
class Rollout < ActiveRecord::Base
|
2
|
+
attr_accessible :name, :group, :user_id, :percentage
|
3
|
+
|
2
4
|
def match?(user)
|
3
5
|
enabled? && (match_user?(user) || match_group?(user) || match_percentage?(user))
|
4
6
|
end
|
@@ -15,12 +17,12 @@ class Rollout < ActiveRecord::Base
|
|
15
17
|
end
|
16
18
|
end
|
17
19
|
|
18
|
-
def match_user?(user
|
20
|
+
def match_user?(user)
|
19
21
|
user_id ? user_id.to_s == user.id.to_s : false
|
20
22
|
end
|
21
23
|
|
22
24
|
def match_percentage?(user)
|
23
|
-
percentage ? user.id % 100 < percentage : false
|
25
|
+
percentage ? ((user.id.to_i % 100) < percentage.to_i) : false
|
24
26
|
end
|
25
27
|
|
26
|
-
end
|
28
|
+
end
|
data/lib/ar_rollout/version.rb
CHANGED
@@ -15,8 +15,12 @@ namespace :rollout do
|
|
15
15
|
task :deactivate_group, [:feature, :user_id] => :environment do |t, args|
|
16
16
|
ArRollout.deactivate_group(args.feature,args.user_id)
|
17
17
|
end
|
18
|
+
desc "Activate a feature for a percentage"
|
19
|
+
task :activate_percentage, [:feature, :percentage] => :environment do |t, args|
|
20
|
+
ArRollout.activate_percentage(args.feature,args.percentage)
|
21
|
+
end
|
18
22
|
desc "Deactivate a feature"
|
19
23
|
task :deactivate_all, [:feature] => :environment do |t, args|
|
20
24
|
ArRollout.deactivate_all(args.feature)
|
21
25
|
end
|
22
|
-
end
|
26
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ar_rollout
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2012-
|
14
|
+
date: 2012-09-05 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rails
|
@@ -137,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
137
137
|
version: '0'
|
138
138
|
requirements: []
|
139
139
|
rubyforge_project:
|
140
|
-
rubygems_version: 1.8.
|
140
|
+
rubygems_version: 1.8.23
|
141
141
|
signing_key:
|
142
142
|
specification_version: 3
|
143
143
|
summary: An ActiveRecord version of Rollout gem (https://github.com/jamesgolick/rollout).
|