ar_rollout 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- 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).
|