rollout_ui2 0.1.1 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7613d47131069f9c31404661107125662d274d96
4
- data.tar.gz: 51ddaa17859e48aaf12a33a5daf1c9a60b3db3d7
3
+ metadata.gz: 9a202103c0ae6445adcba865e7fdeb391e4b7cbe
4
+ data.tar.gz: 7c5de71b01e84d0dbbe004401959509962a24633
5
5
  SHA512:
6
- metadata.gz: 8f80ab0326ac3b5102f4740bdee0ca04c18a0b95eb809c4f9914974eac5bda3f068a93a13d9fc42e9452a48fc77b847051152d56e705e1050fda5f76d929137d
7
- data.tar.gz: 812d909e617e38cb97589c7ad3bace1e2511bddd9b1c1de72314143581631adeb92bd74fa6759b57a76de037013d3eb27d0023ef797089d4a7dabbbdc39a4e34
6
+ metadata.gz: d130d972401708102c4e3678ae5a2d27166d6d577a8970c3f2b0e762fe7c01db991597aed9743e883734a9a7569ce24868c15798b98366afa965b9c0c66c172c
7
+ data.tar.gz: 152d123daabe0f7af2a594de57254acf9a1aea5c56d8ad2d6b1dd5a1464669e53772f7872c2a252d2479678920aa842f28db03062453093b7745023dfa76cbfb
data/.gitignore CHANGED
@@ -1,4 +1,5 @@
1
1
  /.bundle/
2
+ /gemfiles/.bundle/
2
3
  /.yardoc
3
4
  /Gemfile.lock
4
5
  /_yardoc/
data/.travis.yml ADDED
@@ -0,0 +1,17 @@
1
+ language: ruby
2
+ sudo: false
3
+
4
+ services:
5
+ - redis
6
+
7
+ script: 'rspec'
8
+
9
+ rvm:
10
+ - 2.2.3
11
+ - ruby-head
12
+ gemfile:
13
+ - gemfiles/rollout_2_0_0.gemfile
14
+ - gemfiles/rollout_2_2_1.gemfile
15
+ - gemfiles/rollout_2_4_0.gemfile
16
+ matrix:
17
+ fast_finish: true
data/Gemfile CHANGED
@@ -2,3 +2,7 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in rollout_ui2.gemspec
4
4
  gemspec
5
+
6
+ group :development do
7
+ gem 'rollout', '~> 2'
8
+ end
data/README.md CHANGED
@@ -1,8 +1,6 @@
1
1
  # RolloutUi2
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/rollout_ui2`. To experiment with that code, run `bin/console` for an interactive prompt.
4
-
5
- TODO: Delete this and the text above, and describe your gem
3
+ Rollout UI for Rollout 2!
6
4
 
7
5
  ## Installation
8
6
 
@@ -20,22 +18,40 @@ Or install it yourself as:
20
18
 
21
19
  $ gem install rollout_ui2
22
20
 
21
+
23
22
  ## Usage
24
23
 
25
- TODO: Write usage instructions here
24
+ Edit `config.ru` and add this:
25
+
26
+ ```ruby
27
+ # config.ru
28
+
29
+ require 'rollout_ui2'
26
30
 
27
- ## Development
31
+ require 'redis'
32
+ RolloutUi2.wrap(Rollout.new(Redis.new))
28
33
 
29
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
34
+ RolloutUi2::Server.use Rack::Auth::Basic do |user, pass|
35
+ user == pass
36
+ end
30
37
 
31
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
38
+ run Rack::URLMap.new(
39
+ # "/" => Your::App.new,
40
+ "/rollout" => RolloutUi2::Server
41
+ )
42
+ ```
43
+
44
+ Execute `rackup` or `rails s` if you are using Rails
45
+
46
+ Visit `http://user:user@localhost:9292/rollout`
47
+
48
+ ![screehshot](http://i.imgur.com/gQLOmAD.png)
32
49
 
33
50
  ## Contributing
34
51
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/rollout_ui2.
52
+ Bug reports and pull requests are welcome on GitHub at https://github.com/weapp/rollout_ui2.
36
53
 
37
54
 
38
55
  ## License
39
56
 
40
57
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
41
-
data/example_rack/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gem 'redis'
4
- gem 'rollout'
4
+ gem 'rollout', '>= 2.0.0'
5
5
 
6
6
  gem 'rollout_ui2', path: '..'
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- rollout_ui2 (0.1.0)
5
- sinatra (~> 1.4.7)
4
+ rollout_ui2 (0.1.1)
5
+ sinatra (~> 1.4, >= 1.4.7)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
@@ -23,7 +23,7 @@ PLATFORMS
23
23
 
24
24
  DEPENDENCIES
25
25
  redis
26
- rollout
26
+ rollout (>= 2.0.0)
27
27
  rollout_ui2!
28
28
 
29
29
  BUNDLED WITH
@@ -0,0 +1,10 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rollout_ui2.gemspec
4
+ gemspec path: ".."
5
+
6
+ group :development do
7
+ gem 'rollout', '= 2.0.0'
8
+ end
9
+
10
+ gem 'coveralls', require: false
@@ -0,0 +1,10 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rollout_ui2.gemspec
4
+ gemspec path: ".."
5
+
6
+ group :development do
7
+ gem 'rollout', '= 2.2.1'
8
+ end
9
+
10
+ gem 'coveralls', require: false
@@ -0,0 +1,10 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rollout_ui2.gemspec
4
+ gemspec path: ".."
5
+
6
+ group :development do
7
+ gem 'rollout', '= 2.4.0'
8
+ end
9
+
10
+ gem 'coveralls', require: false
@@ -1,3 +1,3 @@
1
1
  module RolloutUi2
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/rollout_ui2.rb CHANGED
@@ -1,55 +1,84 @@
1
1
  require "rollout_ui2/version"
2
2
  require 'sinatra/base'
3
- require 'rollout'
4
3
  require 'yaml'
5
4
 
6
5
  module RolloutUi2
7
- def self.wrap(rollout)
8
- @rollout = rollout
9
- end
6
+ class << self
7
+ def wrap(rollout)
8
+ @rollout = rollout
9
+ end
10
10
 
11
- def self.store
12
- @store ||= begin
13
- require 'redis'
14
- Redis.new
11
+ def store
12
+ @store ||= begin
13
+ require 'redis'
14
+ Redis.new
15
+ end
15
16
  end
16
- end
17
17
 
18
- def self.rollout
19
- @rollout ||= Rollout.new(store)
20
- end
18
+ def rollout
19
+ @rollout ||= begin
20
+ require 'rollout'
21
+ Rollout.new(store)
22
+ end
23
+ end
21
24
 
22
- def self.index
23
- rollout.features.empty? ? [] : rollout.multi_get(*rollout.features.sort)
24
- end
25
+ def index
26
+ rollout.features.empty? ? [] : multi(rollout.features.sort)
27
+ end
25
28
 
26
- def self.get(name)
27
- rollout.get(name)
28
- end
29
+ def get(name)
30
+ Feature.new(rollout.get(name))
31
+ end
32
+
33
+ def save(feature)
34
+ rollout.send(:save, feature)
35
+ end
36
+
37
+ def delete(feature)
38
+ return rollout.delete(feature.name) if rollout.respond_to?(:delete)
39
+ rollout.deactivate(feature.name)
40
+ end
41
+
42
+ private
29
43
 
30
- def self.save(feature)
31
- rollout.send(:save, feature)
44
+ def multi(keys)
45
+ features = if rollout.respond_to?(:multi_get)
46
+ rollout.multi_get(*keys)
47
+ else
48
+ keys.map { |key| get(key) }
49
+ end
50
+ features.map { |f| Feature.new(f) }
51
+ end
32
52
  end
33
53
 
34
- def self.delete(feature)
35
- rollout.delete(feature.name)
54
+ class Feature < SimpleDelegator
55
+ alias feature __getobj__
56
+
57
+ def data
58
+ CGI::escapeHTML(feature.data.to_yaml.sub(/\A---\s/, '')) if data?
59
+ end
60
+
61
+ def data?
62
+ feature.respond_to?(:data)
63
+ end
64
+
65
+ def groups
66
+ feature.groups.to_a
67
+ end
68
+
69
+ def users
70
+ feature.users.to_a
71
+ end
36
72
  end
37
- end
38
73
 
39
- module RolloutUi2
40
74
  class Server < Sinatra::Base
41
-
42
75
  helpers do
43
76
  def all_groups(features)
44
77
  features.reduce([]) { |a, e| a | e.groups }
45
78
  end
46
79
 
47
80
  def as_array(param)
48
- if param.respond_to?(:split)
49
- param.split(",")
50
- else
51
- param
52
- end
81
+ param.respond_to?(:split) ? param.split(",") : param || []
53
82
  end
54
83
 
55
84
  def url_path(*path_parts)
data/lib/views/index.erb CHANGED
@@ -66,11 +66,13 @@
66
66
  </div>
67
67
  </div>
68
68
 
69
- <div class="form-group form-group-sm">
70
- <div class="col-sm-offset-2 col-sm-5">
71
- <pre><%= CGI::escapeHTML(feature.data.to_yaml.sub(/\A---\s/, '')) %></pre>
69
+ <% if feature.data? %>
70
+ <div class="form-group form-group-sm">
71
+ <div class="col-sm-offset-2 col-sm-5">
72
+ <pre><%= feature.data %></pre>
73
+ </div>
72
74
  </div>
73
- </div>
75
+ <% end %>
74
76
 
75
77
  <div class="form-group form-group-sm">
76
78
  <div class="col-sm-offset-2 col-sm-10">
data/rollout_ui2.gemspec CHANGED
@@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency "bundler", "~> 1.11"
23
23
  spec.add_development_dependency "rake", "~> 10.0"
24
24
  spec.add_development_dependency "rspec", "~> 3.0"
25
+ spec.add_development_dependency "rack-test"
25
26
 
26
27
  spec.add_runtime_dependency 'sinatra', '~> 1.4', '>= 1.4.7'
27
28
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rollout_ui2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Manuel
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-12-02 00:00:00.000000000 Z
11
+ date: 2016-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rack-test
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: sinatra
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -81,6 +95,7 @@ extra_rdoc_files: []
81
95
  files:
82
96
  - ".gitignore"
83
97
  - ".rspec"
98
+ - ".travis.yml"
84
99
  - Gemfile
85
100
  - LICENSE.txt
86
101
  - README.md
@@ -90,8 +105,10 @@ files:
90
105
  - example_rack/.bundle/config
91
106
  - example_rack/Gemfile
92
107
  - example_rack/Gemfile.lock
93
- - example_rack/README.md
94
108
  - example_rack/config.ru
109
+ - gemfiles/rollout_2_0_0.gemfile
110
+ - gemfiles/rollout_2_2_1.gemfile
111
+ - gemfiles/rollout_2_4_0.gemfile
95
112
  - lib/public/vendor/bootstrap/css/bootstrap-theme.css
96
113
  - lib/public/vendor/bootstrap/css/bootstrap-theme.css.map
97
114
  - lib/public/vendor/bootstrap/css/bootstrap-theme.min.css
@@ -143,4 +160,3 @@ signing_key:
143
160
  specification_version: 4
144
161
  summary: WebUI for rollout 2
145
162
  test_files: []
146
- has_rdoc:
@@ -1,6 +0,0 @@
1
- RolloutUi2
2
- ==========
3
-
4
- Rollout UI for Rollout 2.4!
5
-
6
- ![screehshot](http://i.imgur.com/gQLOmAD.png)