bitlove-rollout_ui 0.1.0

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