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 CHANGED
@@ -11,26 +11,31 @@ module ArRollout
11
11
  end
12
12
  end
13
13
 
14
- def self.activate_user(feature = nil, user = nil)
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 = nil, user = nil)
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 = nil, group = nil)
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 = nil, group = nil)
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).map(&:percentage).first
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
@@ -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 = nil)
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
@@ -1,3 +1,3 @@
1
1
  module ArRollout
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
@@ -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.8
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-08-20 00:00:00.000000000 Z
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.24
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).