Class: Rollout

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
lib/ar_rollout/rollout.rb

Instance Method Summary collapse

Instance Method Details

#enabled?Boolean

Returns:

  • (Boolean)


9
10
11
# File 'lib/ar_rollout/rollout.rb', line 9

def enabled?
  failure_count.to_i < 1
end

#match?(user) ⇒ Boolean

Returns:

  • (Boolean)


4
5
6
7
# File 'lib/ar_rollout/rollout.rb', line 4

def match?(user)
  return false unless user
  enabled? && (match_user?(user) || match_group?(user) || match_percentage?(user))
end

#match_group?(user) ⇒ Boolean

Returns:

  • (Boolean)


13
14
15
16
17
18
19
20
21
# File 'lib/ar_rollout/rollout.rb', line 13

def match_group?(user)
  if Rollout.method_defined? "match_#{group}?"
    send "match_#{group}?", user
  elsif group = Group.find_by_name(group) && group.memberships.where('user_id = ?', user.id).any?
    true
  else
    false
  end
end

#match_percentage?(user) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/ar_rollout/rollout.rb', line 27

def match_percentage?(user)
  percentage ? ((user.id.to_i % 100) < percentage.to_i) : false
end

#match_user?(user) ⇒ Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/ar_rollout/rollout.rb', line 23

def match_user?(user)
  user_id ? user_id.to_s == user.id.to_s : false
end