unveil-ruby 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/tasks/unveil_tasks.rake +113 -0
- data/lib/unveil/app.rb +4 -0
- data/lib/unveil/feature.rb +6 -2
- data/lib/unveil/helpers.rb +19 -0
- data/lib/unveil/version.rb +1 -1
- data/lib/unveil.rb +6 -0
- metadata +3 -1
@@ -0,0 +1,113 @@
|
|
1
|
+
namespace :unveil do
|
2
|
+
desc 'Activate a feature for a group'
|
3
|
+
task :activate_group, [:feature, :group] => :environment do |t, args|
|
4
|
+
with_exit do
|
5
|
+
Unveil::Feature.new(name: args.feature).activate_group(args.group)
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
desc 'Deactivate a feature for a group'
|
10
|
+
task :deactivate_group, [:feature, :group] => :environment do |t, args|
|
11
|
+
with_exit do
|
12
|
+
Unveil::Feature.new(name: args.feature).deactivate_group(args.group)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
desc 'Activate a feature for a user'
|
17
|
+
task :activate_user, [:feature, :user_id] => :environment do |t, args|
|
18
|
+
with_exit do
|
19
|
+
Unveil::Feature.new(name: args.feature).activate_user(args.user_id)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
desc 'Dectivate a feature for a user'
|
24
|
+
task :deactivate_user, [:feature, :user_id] => :environment do |t, args|
|
25
|
+
with_exit do
|
26
|
+
Unveil::Feature.new(name: args.feature).deactivate_user(args.user_id)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
desc 'Activate a feature for a percentage of users'
|
31
|
+
task :activate_percentage, [:feature, :percentage] => :environment do |t, args|
|
32
|
+
with_exit do
|
33
|
+
Unveil::Feature.new(name: args.feature).activate_percentage(args.percentage)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
desc "Dectivate a feature's percentage rollout"
|
38
|
+
task :deactivate_percentage, [:feature] => :environment do |t, args|
|
39
|
+
with_exit do
|
40
|
+
Unveil::Feature.new(name: args.feature).deactivate_percentage
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
desc "Deactivate a feature entirely"
|
45
|
+
task :deactivate_all, [:feature] => :environment do |t, args|
|
46
|
+
with_exit do
|
47
|
+
Unveil::Feature.new(name: args.feature).deactivate_all
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
desc "List all features"
|
52
|
+
task :features, [] => :environment do |t, args|
|
53
|
+
puts Unveil::App.new.feature_names
|
54
|
+
end
|
55
|
+
|
56
|
+
desc "Summarize all features"
|
57
|
+
task :summary, [] => :environment do |t, args|
|
58
|
+
Unveil::App.new.features.each do |feature|
|
59
|
+
puts "#{feature.name}\n"
|
60
|
+
puts " \033[31mGroups:\033[0m \033[32m#{feature.groups.join(', ')}\033[0m"
|
61
|
+
puts " \033[31mPercentage:\033[0m \033[32m#{feature.percentage}\033[0m"
|
62
|
+
puts " \033[31mUser Count:\033[0m \033[32m#{feature.user_count}\033[0m"
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
desc "List all groups"
|
67
|
+
task :groups, [] => :environment do |t, args|
|
68
|
+
puts Unveil::App.new.groups
|
69
|
+
end
|
70
|
+
|
71
|
+
namespace :groups do
|
72
|
+
desc "Create a group"
|
73
|
+
task :create, [:group] => :environment do |t, args|
|
74
|
+
with_exit do
|
75
|
+
Unveil::Group.new(args.group).save
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
desc "Delete a group"
|
80
|
+
task :delete, [:group] => :environment do |t, args|
|
81
|
+
with_exit do
|
82
|
+
Unveil::Group.new(args.group).destroy
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
desc "Add a user to a group"
|
87
|
+
task :add_user, [:group, :user_id] => :environment do |t, args|
|
88
|
+
with_exit do
|
89
|
+
Unveil::Group.new(args.group).add_user(args.user_id)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
desc "Remove a user from a group"
|
94
|
+
task :remove_user, [:group, :user_id] => :environment do |t, args|
|
95
|
+
with_exit do
|
96
|
+
Unveil::Group.new(args.group).remove_user(args.user_id)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
private
|
102
|
+
|
103
|
+
def with_exit(&block)
|
104
|
+
code = yield.code
|
105
|
+
|
106
|
+
if code == '200'
|
107
|
+
exit 0
|
108
|
+
else
|
109
|
+
puts "BAD RESPONSE: Response code #{code}"
|
110
|
+
exit 1
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
data/lib/unveil/app.rb
CHANGED
data/lib/unveil/feature.rb
CHANGED
@@ -4,6 +4,10 @@ module Unveil
|
|
4
4
|
@attributes = attrs
|
5
5
|
end
|
6
6
|
|
7
|
+
def attributes
|
8
|
+
@attributes.with_indifferent_access
|
9
|
+
end
|
10
|
+
|
7
11
|
def enabled(user_id)
|
8
12
|
Unveil.get "features/#{name}/enabled/#{user_id}"
|
9
13
|
end
|
@@ -39,8 +43,8 @@ module Unveil
|
|
39
43
|
end
|
40
44
|
|
41
45
|
def method_missing(method, *args, &block)
|
42
|
-
if
|
43
|
-
|
46
|
+
if attributes.has_key?(method)
|
47
|
+
attributes[method]
|
44
48
|
else
|
45
49
|
super
|
46
50
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Unveil
|
2
|
+
module Controller
|
3
|
+
module Helpers
|
4
|
+
def self.included(base)
|
5
|
+
base.send :helper_method, :rollout?
|
6
|
+
base.send :helper_method, :unveil
|
7
|
+
end
|
8
|
+
|
9
|
+
def rollout?(feature)
|
10
|
+
return false unless current_user
|
11
|
+
ArRollout.active?(name, current_user)
|
12
|
+
end
|
13
|
+
|
14
|
+
def unveil
|
15
|
+
@unveil ||= Unveil::App.new
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/unveil/version.rb
CHANGED
data/lib/unveil.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unveil-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -23,10 +23,12 @@ files:
|
|
23
23
|
- LICENSE.txt
|
24
24
|
- README.md
|
25
25
|
- Rakefile
|
26
|
+
- lib/tasks/unveil_tasks.rake
|
26
27
|
- lib/unveil.rb
|
27
28
|
- lib/unveil/app.rb
|
28
29
|
- lib/unveil/feature.rb
|
29
30
|
- lib/unveil/group.rb
|
31
|
+
- lib/unveil/helpers.rb
|
30
32
|
- lib/unveil/user.rb
|
31
33
|
- lib/unveil/version.rb
|
32
34
|
- unveil-ruby.gemspec
|