bitlove-rollout_ui 0.1.0

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.
Files changed (70) hide show
  1. data/README.markdown +73 -0
  2. data/Rakefile +12 -0
  3. data/lib/rollout_ui.rb +25 -0
  4. data/lib/rollout_ui/engine/Rakefile +12 -0
  5. data/lib/rollout_ui/engine/app/assets/images/rollout_ui/dark_brick_wall.png +0 -0
  6. data/lib/rollout_ui/engine/app/assets/images/rollout_ui/rollout.png +0 -0
  7. data/lib/rollout_ui/engine/app/assets/javascripts/rollout_ui/application.js +9 -0
  8. data/lib/rollout_ui/engine/app/assets/stylesheets/rollout_ui/application.css +9 -0
  9. data/lib/rollout_ui/engine/app/assets/stylesheets/rollout_ui/layout.css +108 -0
  10. data/lib/rollout_ui/engine/app/controllers/rollout_ui/application_controller.rb +4 -0
  11. data/lib/rollout_ui/engine/app/controllers/rollout_ui/features_controller.rb +25 -0
  12. data/lib/rollout_ui/engine/app/helpers/rollout_ui/application_helper.rb +4 -0
  13. data/lib/rollout_ui/engine/app/views/layouts/rollout_ui/application.html.erb +29 -0
  14. data/lib/rollout_ui/engine/app/views/rollout_ui/features/_feature.html.erb +34 -0
  15. data/lib/rollout_ui/engine/app/views/rollout_ui/features/index.html.erb +14 -0
  16. data/lib/rollout_ui/engine/config/routes.rb +5 -0
  17. data/lib/rollout_ui/engine/lib/rollout_ui/engine.rb +5 -0
  18. data/lib/rollout_ui/engine/lib/tasks/rollout_ui_tasks.rake +4 -0
  19. data/lib/rollout_ui/engine/script/rails +6 -0
  20. data/lib/rollout_ui/engine/vendor/assets/images/rollout_ui/chosen-sprite.png +0 -0
  21. data/lib/rollout_ui/engine/vendor/assets/javascripts/chosen.jquery.js +1011 -0
  22. data/lib/rollout_ui/engine/vendor/assets/javascripts/jquery-ujs.js +367 -0
  23. data/lib/rollout_ui/engine/vendor/assets/stylesheets/chosen.css +369 -0
  24. data/lib/rollout_ui/engine/vendor/assets/stylesheets/normalize.css +431 -0
  25. data/lib/rollout_ui/feature.rb +50 -0
  26. data/lib/rollout_ui/monkey_patch.rb +8 -0
  27. data/lib/rollout_ui/server.rb +71 -0
  28. data/lib/rollout_ui/server/public/rollout_ui/application.css +916 -0
  29. data/lib/rollout_ui/server/public/rollout_ui/application.js +45 -0
  30. data/lib/rollout_ui/server/public/rollout_ui/chosen-sprite.png +0 -0
  31. data/lib/rollout_ui/server/public/rollout_ui/dark_brick_wall.png +0 -0
  32. data/lib/rollout_ui/server/public/rollout_ui/rollout.png +0 -0
  33. data/lib/rollout_ui/server/views/feature.erb +34 -0
  34. data/lib/rollout_ui/server/views/index.erb +5 -0
  35. data/lib/rollout_ui/server/views/layout.erb +32 -0
  36. data/lib/rollout_ui/version.rb +3 -0
  37. data/lib/rollout_ui/wrapper.rb +28 -0
  38. data/spec/dummy/Rakefile +7 -0
  39. data/spec/dummy/app/assets/javascripts/application.js +7 -0
  40. data/spec/dummy/app/assets/stylesheets/application.css +7 -0
  41. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  42. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  43. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  44. data/spec/dummy/config.ru +12 -0
  45. data/spec/dummy/config/application.rb +45 -0
  46. data/spec/dummy/config/boot.rb +10 -0
  47. data/spec/dummy/config/database.yml +14 -0
  48. data/spec/dummy/config/environment.rb +5 -0
  49. data/spec/dummy/config/environments/development.rb +30 -0
  50. data/spec/dummy/config/environments/production.rb +60 -0
  51. data/spec/dummy/config/environments/test.rb +39 -0
  52. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  53. data/spec/dummy/config/initializers/inflections.rb +10 -0
  54. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  55. data/spec/dummy/config/initializers/rollout.rb +6 -0
  56. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  57. data/spec/dummy/config/initializers/session_store.rb +8 -0
  58. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  59. data/spec/dummy/config/locales/en.yml +5 -0
  60. data/spec/dummy/config/routes.rb +5 -0
  61. data/spec/dummy/public/404.html +26 -0
  62. data/spec/dummy/public/422.html +26 -0
  63. data/spec/dummy/public/500.html +26 -0
  64. data/spec/dummy/public/favicon.ico +0 -0
  65. data/spec/dummy/script/rails +6 -0
  66. data/spec/lib/rollout_ui/feature_spec.rb +52 -0
  67. data/spec/lib/rollout_ui/wrapper_spec.rb +63 -0
  68. data/spec/requests/engine/engine_spec.rb +95 -0
  69. data/spec/spec_helper.rb +22 -0
  70. metadata +267 -0
@@ -0,0 +1,10 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Add new inflection rules using the following format
4
+ # (all these examples are active by default):
5
+ # ActiveSupport::Inflector.inflections do |inflect|
6
+ # inflect.plural /^(ox)$/i, '\1en'
7
+ # inflect.singular /^(ox)en/i, '\1'
8
+ # inflect.irregular 'person', 'people'
9
+ # inflect.uncountable %w( fish sheep )
10
+ # end
@@ -0,0 +1,5 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Add new mime types for use in respond_to blocks:
4
+ # Mime::Type.register "text/richtext", :rtf
5
+ # Mime::Type.register_alias "text/html", :iphone
@@ -0,0 +1,6 @@
1
+ $redis = Redis.new
2
+ $rollout = Rollout.new($redis)
3
+ RolloutUi.wrap($rollout)
4
+
5
+ $rollout.define_group(:admins) { |user| user.admin? }
6
+ $rollout.define_group(:beta_testers) { |user| user.beta_testers? }
@@ -0,0 +1,7 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Your secret key for verifying the integrity of signed cookies.
4
+ # If you change this key, all old signed cookies will become invalid!
5
+ # Make sure the secret is at least 30 characters and all random,
6
+ # no regular words or you'll be exposed to dictionary attacks.
7
+ Dummy::Application.config.secret_token = 'f3c70116ca0a584f0d7f866a25fe7b91b16e73493426a3f124b76ec46d3a38065caecaaa049ac6710927c18a687624da9a7b23fda6856e218542c24efebb3d5e'
@@ -0,0 +1,8 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ Dummy::Application.config.session_store :cookie_store, :key => '_dummy_session'
4
+
5
+ # Use the database for sessions instead of the cookie-based default,
6
+ # which shouldn't be used to store highly confidential information
7
+ # (create the session table with "rails generate session_migration")
8
+ # Dummy::Application.config.session_store :active_record_store
@@ -0,0 +1,14 @@
1
+ # Be sure to restart your server when you modify this file.
2
+ #
3
+ # This file contains settings for ActionController::ParamsWrapper which
4
+ # is enabled by default.
5
+
6
+ # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
7
+ ActiveSupport.on_load(:action_controller) do
8
+ wrap_parameters :format => [:json]
9
+ end
10
+
11
+ # Disable root element in JSON by default.
12
+ ActiveSupport.on_load(:active_record) do
13
+ self.include_root_in_json = false
14
+ end
@@ -0,0 +1,5 @@
1
+ # Sample localization file for English. Add more files in this directory for other locales.
2
+ # See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
3
+
4
+ en:
5
+ hello: "Hello world"
@@ -0,0 +1,5 @@
1
+ Rails.application.routes.draw do
2
+ mount RolloutUi::Engine => "/rollout"
3
+
4
+ root :to => proc { |env| [200, {}, "Hello World!"] }
5
+ end
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/404.html -->
21
+ <div class="dialog">
22
+ <h1>The page you were looking for doesn't exist.</h1>
23
+ <p>You may have mistyped the address or the page may have moved.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/422.html -->
21
+ <div class="dialog">
22
+ <h1>The change you wanted was rejected.</h1>
23
+ <p>Maybe you tried to change something you didn't have access to.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/500.html -->
21
+ <div class="dialog">
22
+ <h1>We're sorry, but something went wrong.</h1>
23
+ <p>We've been notified about this issue and we'll take a look at it shortly.</p>
24
+ </div>
25
+ </body>
26
+ </html>
File without changes
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,52 @@
1
+ require 'spec_helper'
2
+
3
+ describe RolloutUi::Feature do
4
+ before do
5
+ # Request a feature to prime RolloutUi::Wrapper rollout instance
6
+ $rollout.active?(:featureA, mock(:user, :id => 5))
7
+
8
+ @feature = RolloutUi::Feature.new(:featureA)
9
+ end
10
+
11
+ describe "#percentage" do
12
+ it "returns the activated percentage for the feature" do
13
+ $rollout.activate_percentage(:featureA, 75)
14
+ @feature.percentage.should == "75"
15
+ end
16
+ end
17
+
18
+ describe "#percentage=" do
19
+ it "sets the activated percentage for the feature" do
20
+ @feature.percentage = 90
21
+ RolloutUi::Feature.new(:featureA).percentage.should == "90"
22
+ end
23
+ end
24
+
25
+ describe "#groups" do
26
+ it "returns the activated groups for the feature" do
27
+ $rollout.activate_group(:featureA, :beta_testers)
28
+ @feature.groups.should == ["beta_testers"]
29
+ end
30
+ end
31
+
32
+ describe "#groups=" do
33
+ it "sets the activated groups for the feature" do
34
+ @feature.groups = ["all", "admins"]
35
+ RolloutUi::Feature.new(:featureA).groups.should == ["admins", "all"]
36
+ end
37
+ end
38
+
39
+ describe "#users" do
40
+ it "returns the activated users for the feature" do
41
+ $rollout.activate_user(:featureA, mock(:user, :id => 5))
42
+ @feature.user_ids.should == ["5"]
43
+ end
44
+ end
45
+
46
+ describe "#users=" do
47
+ it "sets the activated users for the feature" do
48
+ @feature.user_ids = [5, "7", ""]
49
+ RolloutUi::Feature.new(:featureA).user_ids.should == ["5", "7"]
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,63 @@
1
+ require 'spec_helper'
2
+
3
+ describe RolloutUi::Wrapper do
4
+ before do
5
+ @rollout_ui = RolloutUi::Wrapper.new
6
+ end
7
+
8
+ it "cannot be initialized without an instance of rollout if rollout hasn't been wrapped" do
9
+ RolloutUi.wrap(nil)
10
+
11
+ lambda { RolloutUi::Wrapper.new }.should raise_error(RolloutUi::Wrapper::NoRolloutInstance)
12
+ end
13
+
14
+ it "can be initialized with an instance of Rollout" do
15
+ RolloutUi::Wrapper.new($rollout).should be_an_instance_of(RolloutUi::Wrapper)
16
+ end
17
+
18
+ it "can be initialized without an instance of rollout if rollout has been wrapped" do
19
+ RolloutUi::Wrapper.new.should be_an_instance_of(RolloutUi::Wrapper)
20
+ end
21
+
22
+ describe "#groups" do
23
+ it "returns all groups defined for the rollout instance" do
24
+ $rollout.define_group(:beta_testers) { |user| user.beta_tester? }
25
+
26
+ @rollout_ui.groups.should == ["all", "beta_testers"]
27
+ end
28
+
29
+ it "doesn't return other defined groups" do
30
+ Rollout.new($redis).define_group(:beta_testers) { |user| user.beta_tester? }
31
+
32
+ @rollout_ui.groups.should == ["all"]
33
+ end
34
+ end
35
+
36
+ describe "#features" do
37
+ it "returns an empty array if no features have been requested" do
38
+ @rollout_ui.features.should == []
39
+ end
40
+
41
+ it "returns all features that have been requested" do
42
+ $rollout.active?(:featureA, mock(:user, :id => 5))
43
+ $rollout.active?(:featureB, mock(:user, :id => 6))
44
+
45
+ @rollout_ui.features.should == ["featureA", "featureB"]
46
+ end
47
+
48
+ it "lists each feature only once" do
49
+ $rollout.active?(:featureA, mock(:user, :id => 5))
50
+ $rollout.active?(:featureA, mock(:user, :id => 6))
51
+
52
+ @rollout_ui.features.should == ["featureA"]
53
+ end
54
+ end
55
+
56
+ describe "#add_feature" do
57
+ it "adds feature to the list of features" do
58
+ @rollout_ui.add_feature(:featureA)
59
+
60
+ @rollout_ui.features.should == ["featureA"]
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,95 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Engine" do
4
+ describe "GET /rollout" do
5
+ let(:user) { mock(:user, :id => 5) }
6
+
7
+ before do
8
+ $rollout.active?(:featureA, user)
9
+ end
10
+
11
+ it "shows requested rollout features" do
12
+ visit "/rollout"
13
+
14
+ page.should have_content("featureA")
15
+ end
16
+
17
+ describe "percentage" do
18
+ it "allows changing of the percentage" do
19
+ visit "/rollout"
20
+
21
+ within("#featureA .percentage_form") do
22
+ select "100", :from => "percentage"
23
+ click_button "Save"
24
+ end
25
+
26
+ $rollout.active?(:featureA, user).should be_true
27
+ end
28
+
29
+ it "shows the selected percentage" do
30
+ visit "/rollout"
31
+
32
+ within("#featureA .percentage_form") do
33
+ select "57", :from => "percentage"
34
+ click_button "Save"
35
+ end
36
+
37
+ page.should have_css(".percentage option[selected='selected']", :text => "57")
38
+ end
39
+ end
40
+
41
+ describe "groups" do
42
+ before do
43
+ user.stub(:beta_tester? => true)
44
+ $rollout.define_group(:beta_testers) { |user| user.beta_tester? }
45
+ end
46
+
47
+ it "allows selecting of groups" do
48
+ visit "/rollout"
49
+
50
+ within("#featureA .groups_form") do
51
+ select "beta_testers", :from => "groups[]"
52
+ click_button "Save"
53
+ end
54
+
55
+ $rollout.active?(:featureA, user).should be_true
56
+ end
57
+
58
+ it "shows the selected groups" do
59
+ visit "/rollout"
60
+
61
+ within("#featureA .groups_form") do
62
+ select "beta_testers", :from => "groups[]"
63
+ click_button "Save"
64
+ end
65
+
66
+ page.should have_css(".groups option[selected='selected']", :text => "beta_testers")
67
+ end
68
+ end
69
+
70
+ describe "users" do
71
+ it "allows adding user ids" do
72
+ visit "/rollout"
73
+
74
+ within("#featureA .users_form") do
75
+ fill_in "users[]", :with => 5
76
+ click_button "Save"
77
+ end
78
+
79
+ $rollout.active?(:featureA, user).should be_true
80
+ end
81
+
82
+ it "shows the selected percentage" do
83
+ visit "/rollout"
84
+
85
+ within("#featureA .users_form") do
86
+ fill_in "users[]", :with => 5
87
+ click_button "Save"
88
+ end
89
+
90
+ page.should have_css("input.users[value='5']")
91
+ end
92
+ end
93
+ end
94
+ end
95
+
@@ -0,0 +1,22 @@
1
+ ENV["RAILS_ENV"] ||= "test"
2
+
3
+ require 'rubygems'
4
+ require 'redis'
5
+ require 'redis-namespace'
6
+
7
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
8
+ require 'rspec/rails'
9
+
10
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
11
+
12
+ $redis = Redis::Namespace.new('rollout_ui:test', :redis => Redis.new)
13
+
14
+ RSpec.configure do |config|
15
+ config.before(:each) do
16
+ keys = $redis.keys("*")
17
+ $redis.del(*keys) unless keys.empty?
18
+
19
+ $rollout = Rollout.new($redis)
20
+ RolloutUi.wrap($rollout)
21
+ end
22
+ end
metadata ADDED
@@ -0,0 +1,267 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bitlove-rollout_ui
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - John Allison
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-02-20 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rollout
16
+ requirement: &70233633600180 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>'
20
+ - !ruby/object:Gem::Version
21
+ version: 1.0.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70233633600180
25
+ - !ruby/object:Gem::Dependency
26
+ name: rake
27
+ requirement: &70233633598060 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *70233633598060
36
+ - !ruby/object:Gem::Dependency
37
+ name: rails
38
+ requirement: &70233633597360 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70233633597360
47
+ - !ruby/object:Gem::Dependency
48
+ name: sinatra
49
+ requirement: &70233633596660 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *70233633596660
58
+ - !ruby/object:Gem::Dependency
59
+ name: uglifier
60
+ requirement: &70233633596140 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *70233633596140
69
+ - !ruby/object:Gem::Dependency
70
+ name: mysql
71
+ requirement: &70233633595540 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *70233633595540
80
+ - !ruby/object:Gem::Dependency
81
+ name: rspec-rails
82
+ requirement: &70233633611020 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *70233633611020
91
+ - !ruby/object:Gem::Dependency
92
+ name: capybara
93
+ requirement: &70233633610160 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *70233633610160
102
+ - !ruby/object:Gem::Dependency
103
+ name: launchy
104
+ requirement: &70233633609040 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: *70233633609040
113
+ - !ruby/object:Gem::Dependency
114
+ name: rack-test
115
+ requirement: &70233633608240 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: *70233633608240
124
+ - !ruby/object:Gem::Dependency
125
+ name: redis-namespace
126
+ requirement: &70233633607780 !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: *70233633607780
135
+ description: A UI for James Golick's rollout gem
136
+ email:
137
+ - jrallison@gmail.com
138
+ executables: []
139
+ extensions: []
140
+ extra_rdoc_files: []
141
+ files:
142
+ - lib/rollout_ui/engine/app/assets/images/rollout_ui/dark_brick_wall.png
143
+ - lib/rollout_ui/engine/app/assets/images/rollout_ui/rollout.png
144
+ - lib/rollout_ui/engine/app/assets/javascripts/rollout_ui/application.js
145
+ - lib/rollout_ui/engine/app/assets/stylesheets/rollout_ui/application.css
146
+ - lib/rollout_ui/engine/app/assets/stylesheets/rollout_ui/layout.css
147
+ - lib/rollout_ui/engine/app/controllers/rollout_ui/application_controller.rb
148
+ - lib/rollout_ui/engine/app/controllers/rollout_ui/features_controller.rb
149
+ - lib/rollout_ui/engine/app/helpers/rollout_ui/application_helper.rb
150
+ - lib/rollout_ui/engine/app/views/layouts/rollout_ui/application.html.erb
151
+ - lib/rollout_ui/engine/app/views/rollout_ui/features/_feature.html.erb
152
+ - lib/rollout_ui/engine/app/views/rollout_ui/features/index.html.erb
153
+ - lib/rollout_ui/engine/config/routes.rb
154
+ - lib/rollout_ui/engine/lib/rollout_ui/engine.rb
155
+ - lib/rollout_ui/engine/lib/tasks/rollout_ui_tasks.rake
156
+ - lib/rollout_ui/engine/Rakefile
157
+ - lib/rollout_ui/engine/script/rails
158
+ - lib/rollout_ui/engine/vendor/assets/images/rollout_ui/chosen-sprite.png
159
+ - lib/rollout_ui/engine/vendor/assets/javascripts/chosen.jquery.js
160
+ - lib/rollout_ui/engine/vendor/assets/javascripts/jquery-ujs.js
161
+ - lib/rollout_ui/engine/vendor/assets/stylesheets/chosen.css
162
+ - lib/rollout_ui/engine/vendor/assets/stylesheets/normalize.css
163
+ - lib/rollout_ui/feature.rb
164
+ - lib/rollout_ui/monkey_patch.rb
165
+ - lib/rollout_ui/server/public/rollout_ui/application.css
166
+ - lib/rollout_ui/server/public/rollout_ui/application.js
167
+ - lib/rollout_ui/server/public/rollout_ui/chosen-sprite.png
168
+ - lib/rollout_ui/server/public/rollout_ui/dark_brick_wall.png
169
+ - lib/rollout_ui/server/public/rollout_ui/rollout.png
170
+ - lib/rollout_ui/server/views/feature.erb
171
+ - lib/rollout_ui/server/views/index.erb
172
+ - lib/rollout_ui/server/views/layout.erb
173
+ - lib/rollout_ui/server.rb
174
+ - lib/rollout_ui/version.rb
175
+ - lib/rollout_ui/wrapper.rb
176
+ - lib/rollout_ui.rb
177
+ - Rakefile
178
+ - README.markdown
179
+ - spec/dummy/app/assets/javascripts/application.js
180
+ - spec/dummy/app/assets/stylesheets/application.css
181
+ - spec/dummy/app/controllers/application_controller.rb
182
+ - spec/dummy/app/helpers/application_helper.rb
183
+ - spec/dummy/app/views/layouts/application.html.erb
184
+ - spec/dummy/config/application.rb
185
+ - spec/dummy/config/boot.rb
186
+ - spec/dummy/config/database.yml
187
+ - spec/dummy/config/environment.rb
188
+ - spec/dummy/config/environments/development.rb
189
+ - spec/dummy/config/environments/production.rb
190
+ - spec/dummy/config/environments/test.rb
191
+ - spec/dummy/config/initializers/backtrace_silencers.rb
192
+ - spec/dummy/config/initializers/inflections.rb
193
+ - spec/dummy/config/initializers/mime_types.rb
194
+ - spec/dummy/config/initializers/rollout.rb
195
+ - spec/dummy/config/initializers/secret_token.rb
196
+ - spec/dummy/config/initializers/session_store.rb
197
+ - spec/dummy/config/initializers/wrap_parameters.rb
198
+ - spec/dummy/config/locales/en.yml
199
+ - spec/dummy/config/routes.rb
200
+ - spec/dummy/config.ru
201
+ - spec/dummy/public/404.html
202
+ - spec/dummy/public/422.html
203
+ - spec/dummy/public/500.html
204
+ - spec/dummy/public/favicon.ico
205
+ - spec/dummy/Rakefile
206
+ - spec/dummy/script/rails
207
+ - spec/lib/rollout_ui/feature_spec.rb
208
+ - spec/lib/rollout_ui/wrapper_spec.rb
209
+ - spec/requests/engine/engine_spec.rb
210
+ - spec/spec_helper.rb
211
+ homepage: http://github.com/jrallison/rollout_ui
212
+ licenses: []
213
+ post_install_message:
214
+ rdoc_options: []
215
+ require_paths:
216
+ - lib
217
+ required_ruby_version: !ruby/object:Gem::Requirement
218
+ none: false
219
+ requirements:
220
+ - - ! '>='
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ required_rubygems_version: !ruby/object:Gem::Requirement
224
+ none: false
225
+ requirements:
226
+ - - ! '>='
227
+ - !ruby/object:Gem::Version
228
+ version: '0'
229
+ requirements: []
230
+ rubyforge_project:
231
+ rubygems_version: 1.8.10
232
+ signing_key:
233
+ specification_version: 3
234
+ summary: A UI for James Golick's rollout gem
235
+ test_files:
236
+ - spec/dummy/app/assets/javascripts/application.js
237
+ - spec/dummy/app/assets/stylesheets/application.css
238
+ - spec/dummy/app/controllers/application_controller.rb
239
+ - spec/dummy/app/helpers/application_helper.rb
240
+ - spec/dummy/app/views/layouts/application.html.erb
241
+ - spec/dummy/config/application.rb
242
+ - spec/dummy/config/boot.rb
243
+ - spec/dummy/config/database.yml
244
+ - spec/dummy/config/environment.rb
245
+ - spec/dummy/config/environments/development.rb
246
+ - spec/dummy/config/environments/production.rb
247
+ - spec/dummy/config/environments/test.rb
248
+ - spec/dummy/config/initializers/backtrace_silencers.rb
249
+ - spec/dummy/config/initializers/inflections.rb
250
+ - spec/dummy/config/initializers/mime_types.rb
251
+ - spec/dummy/config/initializers/rollout.rb
252
+ - spec/dummy/config/initializers/secret_token.rb
253
+ - spec/dummy/config/initializers/session_store.rb
254
+ - spec/dummy/config/initializers/wrap_parameters.rb
255
+ - spec/dummy/config/locales/en.yml
256
+ - spec/dummy/config/routes.rb
257
+ - spec/dummy/config.ru
258
+ - spec/dummy/public/404.html
259
+ - spec/dummy/public/422.html
260
+ - spec/dummy/public/500.html
261
+ - spec/dummy/public/favicon.ico
262
+ - spec/dummy/Rakefile
263
+ - spec/dummy/script/rails
264
+ - spec/lib/rollout_ui/feature_spec.rb
265
+ - spec/lib/rollout_ui/wrapper_spec.rb
266
+ - spec/requests/engine/engine_spec.rb
267
+ - spec/spec_helper.rb