offs 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 13568710d593b1098f5e5de00b8ed58f69a73b31
4
- data.tar.gz: ff7e020f519770ee2733e6d85e00519cb78bb456
3
+ metadata.gz: c7db6d39408404296ef58f569ece95b32633ef09
4
+ data.tar.gz: 2eaa89d57e80b8c512819fcf96fe6bb562bb9ba6
5
5
  SHA512:
6
- metadata.gz: 68f264e63bafbd12fb4ff68438b00bcb6d7ef288e8c746c66073fe8dfdf48f775a829905749d6b56d0352a0c0e68c56186cc2e38ac20fe6813371c5adae174b0
7
- data.tar.gz: bae87536ff2b96f8dc16a38bdeae5f52ecc3aa191acda5db1eb462d82bdf070a757d735ba6b1edf8cd8924a6c0972c34c951f98b28b4e793a9db40bc9c853e56
6
+ metadata.gz: d3996fa7d6619ba57aa666114d805a66f29c17fa4285c5223dcbe610d1c210d6d6c15192fd6382c67006caabe843525008ef9d0395dd4408acbabc89b7fc4557
7
+ data.tar.gz: 2f44320aed399e0a488f397e2ec8738e36fc627fff2e33536870c08efcc44cec361d8dcb9e856c53082339deb7afef48c38c7a6b90a05ce75ee5ca9070c09e2c
data/README.md CHANGED
@@ -76,12 +76,20 @@ class Foo
76
76
  end
77
77
  end
78
78
  end
79
+
80
+ def do_something_for_new_feature
81
+ OFFS.raise_error_unless_we :use_my_million_dollar_idea
82
+ # The following code will only be reached if the feature is enabled.
83
+ # Otherwise we raise an OFFS::FeatureDisabled error
84
+ end
79
85
  end
80
86
  ```
81
87
 
82
88
  Note that you are not required to have *both* the `would_like_to` and
83
89
  `may_still_need_to` blocks present; they simply become a noop if not
84
- present.
90
+ present. Shortcuts for this usage are provided via
91
+ `OFFS.if_you_would_like_to` and `OFFS.if_you_do_not_want_to`,
92
+ respectively.
85
93
 
86
94
  ## Contributing
87
95
 
data/lib/offs/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class OFFS
2
- VERSION = "1.2.0"
2
+ VERSION = "1.3.0"
3
3
  end
data/lib/offs.rb CHANGED
@@ -5,6 +5,8 @@ require 'injectable_dependencies'
5
5
  class OFFS
6
6
  include InjectableDependencies
7
7
 
8
+ class FeatureDisabled < RuntimeError; end
9
+
8
10
  class << self
9
11
  def so_you_want_to(flag, &block)
10
12
  new(flag).so_you_want_to(&block)
@@ -22,6 +24,10 @@ class OFFS
22
24
  end
23
25
  end
24
26
 
27
+ def raise_error_unless_we(flag)
28
+ new(flag).raise_error_unless_we
29
+ end
30
+
25
31
  def feature_flags
26
32
  Flags.instance.to_a
27
33
  end
@@ -47,6 +53,14 @@ class OFFS
47
53
  when_flag(false, &block)
48
54
  end
49
55
 
56
+ def raise_error_unless_we
57
+ unless flag_enabled?
58
+ raise FeatureDisabled,
59
+ "Attempted to access code that is only available when the '#{flag}' " \
60
+ + "feature is enabled, and it is currenlty disabled."
61
+ end
62
+ end
63
+
50
64
  private
51
65
 
52
66
  attr_reader :flag
@@ -59,6 +73,7 @@ class OFFS
59
73
  def flag_status
60
74
  feature_flags.enabled?(flag)
61
75
  end
76
+ alias_method :flag_enabled?, :flag_status
62
77
 
63
78
  def flag=(new_flag)
64
79
  @flag = feature_flags.validate!(new_flag)
data/spec/offs_spec.rb CHANGED
@@ -80,6 +80,10 @@ describe OFFS do
80
80
  end
81
81
  expect(x).to be_nil
82
82
  end
83
+
84
+ it 'noops for raise_error_unless_we' do
85
+ OFFS.raise_error_unless_we(:my_cool_new_feature)
86
+ end
83
87
  end
84
88
 
85
89
  context "and the feature is turned off by default" do
@@ -115,6 +119,11 @@ describe OFFS do
115
119
  end
116
120
  expect(x).to eq 1
117
121
  end
122
+
123
+ it 'raises an OFFS::FeatureDisabled error for raise_error_unless_we' do
124
+ expect { OFFS.raise_error_unless_we(:my_cool_new_feature) }.to \
125
+ raise_error(OFFS::FeatureDisabled, /my_cool_new_feature/)
126
+ end
118
127
  end
119
128
  end
120
129
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: offs
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Wilger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-26 00:00:00.000000000 Z
11
+ date: 2015-03-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: injectable_dependencies