feature_definitions 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.
data/README.rdoc CHANGED
@@ -23,8 +23,11 @@ app/controller/application_controller.rb:
23
23
  end
24
24
 
25
25
  app/views/some/view.erb.html:
26
- <% Features.AWESOME.enabled? %>
27
- You have awesome enabled!
26
+ <% if Features.AWESOME.enabled? %>
27
+ You have the awesome feature enabled!
28
+ <% end %>
29
+ <% Features.AWESOME.enabled? do %>
30
+ You have awesome blocks enabled!
28
31
  <% end %>
29
32
 
30
33
  == Contributing to feature_definitions
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.2.0
@@ -0,0 +1,61 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "feature_definitions"
8
+ s.version = "0.2.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Ryan Graham"]
12
+ s.date = "2013-03-19"
13
+ s.description = "Simple and flexible feature toggle defintion"
14
+ s.email = "r.m.graham@gmail.com"
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ "Gemfile",
22
+ "LICENSE.txt",
23
+ "README.rdoc",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "feature_definitions.gemspec",
27
+ "lib/feature_definitions.rb",
28
+ "test/helper.rb",
29
+ "test/test_feature_definitions.rb"
30
+ ]
31
+ s.homepage = "http://github.com/rmg/feature_definitions"
32
+ s.licenses = ["MIT"]
33
+ s.require_paths = ["lib"]
34
+ s.rubygems_version = "1.8.23"
35
+ s.summary = "Simple and flexible feature definition"
36
+
37
+ if s.respond_to? :specification_version then
38
+ s.specification_version = 3
39
+
40
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
41
+ s.add_runtime_dependency(%q<lazy_const>, [">= 0"])
42
+ s.add_development_dependency(%q<minitest>, [">= 0"])
43
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
44
+ s.add_development_dependency(%q<bundler>, [">= 0"])
45
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
46
+ else
47
+ s.add_dependency(%q<lazy_const>, [">= 0"])
48
+ s.add_dependency(%q<minitest>, [">= 0"])
49
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
50
+ s.add_dependency(%q<bundler>, [">= 0"])
51
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
52
+ end
53
+ else
54
+ s.add_dependency(%q<lazy_const>, [">= 0"])
55
+ s.add_dependency(%q<minitest>, [">= 0"])
56
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
57
+ s.add_dependency(%q<bundler>, [">= 0"])
58
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
59
+ end
60
+ end
61
+
@@ -2,23 +2,29 @@ require 'lazy_const'
2
2
 
3
3
  class FeatureDefinitions
4
4
  extend LazyConst
5
+ attr_reader :opts, :test_proc
5
6
 
6
7
  def self.define_feature(name, opts = {}, &block)
7
- lazy_const(name){ new(opts, &block) }
8
+ lazy_const(name){ new(opts, block.to_proc) }
8
9
  end
9
10
 
10
- def initialize(opts = {}, &block)
11
+ def initialize(opts, proc)
11
12
  @opts = opts
12
- @proc = block.to_proc
13
+ @test_proc = proc
13
14
  end
14
15
 
15
16
  def self.context=(context)
16
17
  @@context = context
17
18
  end
18
19
 
19
- def enabled?
20
- args = @opts[:using].map { |sym| @@context.public_send(sym) }
21
- @proc.call(*args)
20
+ def context
21
+ @@context
22
22
  end
23
23
 
24
+ def enabled?(&block)
25
+ args = opts[:using].map { |sym| context.public_send(sym) }
26
+ test_proc.call(*args).tap do |verdict|
27
+ yield if block_given? and verdict
28
+ end
29
+ end
24
30
  end
@@ -21,4 +21,12 @@ class TestFeatureDefinitions < MiniTest::Unit::TestCase
21
21
  Features.context = OpenStruct.new(is_awesome?: false)
22
22
  refute Features.AWESOME.enabled?
23
23
  end
24
+ def test_feature_toggle_with_block
25
+ Features.context = OpenStruct.new(is_awesome?: true)
26
+ called = false
27
+ Features.AWESOME.enabled? do
28
+ called = true
29
+ end
30
+ assert called
31
+ end
24
32
  end
metadata CHANGED
@@ -2,14 +2,14 @@
2
2
  name: feature_definitions
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.1
5
+ version: 0.2.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Ryan Graham
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-13 00:00:00.000000000 Z
12
+ date: 2013-03-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  version_requirements: !ruby/object:Gem::Requirement
@@ -105,6 +105,7 @@ files:
105
105
  - README.rdoc
106
106
  - Rakefile
107
107
  - VERSION
108
+ - feature_definitions.gemspec
108
109
  - lib/feature_definitions.rb
109
110
  - test/helper.rb
110
111
  - test/test_feature_definitions.rb
@@ -122,7 +123,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
122
123
  - !ruby/object:Gem::Version
123
124
  segments:
124
125
  - 0
125
- hash: -4231625488023910162
126
+ hash: -3803903361324450403
126
127
  version: '0'
127
128
  required_rubygems_version: !ruby/object:Gem::Requirement
128
129
  none: false