env_bang 0.2.5 → 0.2.6

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: 2c6950075ca1b4ad501344c4add8c6c7e74d29e0
4
- data.tar.gz: acc310530d8e8893ab49a708aceb326de2343bee
3
+ metadata.gz: bfdb5e43a5f35d5cea9f39f538f83504d4f77869
4
+ data.tar.gz: f11fd02adf4720dcec9a4f6161aa618bc259f877
5
5
  SHA512:
6
- metadata.gz: 02b440a566c7ea4f9935e33e7da004cbcd7bf0d1edde2d8a5876a7e205d55d3827637aae3b2fabdbfa75f6dbe58250af7e187bc3bec96e0691e54e79d547db4d
7
- data.tar.gz: 4ddc971eeee49292e4cb82edd514157947b1b78ac5646b3e8591def786293c85fd90bed7f620853b262af7abc862c8747e142785d4fc2915cc20f819195024c7
6
+ metadata.gz: 161419e599bed888d9f6177a3113685379d32710712c6d20a6953e16389d1ef8aaa291d9474a337b187c9e9b640a837cb0802e08827a1912365a802f547a6161
7
+ data.tar.gz: b90d49748dba09ae7633796290f31a2931dcb7478f58b95854eddfd0e0eeaf7a2b4225bd07678cac4792adeff1e97e79deb6f93c92e4c20a83c1361bd9fab6da
@@ -0,0 +1,22 @@
1
+ class ENV_BANG
2
+ module Formatter
3
+ class << self
4
+ def formatted_error(var, description)
5
+ indent 4, <<-EOS
6
+
7
+ Missing required environment variable: #{var}#{ description and "\n" <<
8
+ unindent(description) }
9
+ EOS
10
+ end
11
+
12
+ def unindent(string)
13
+ width = string.scan(/^ */).map(&:length).min
14
+ string.gsub(/^ {#{width}}/, '')
15
+ end
16
+
17
+ def indent(width, string)
18
+ string.gsub "\n", "\n#{' ' * width}"
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,3 +1,3 @@
1
1
  class ENV_BANG
2
- VERSION = "0.2.5"
2
+ VERSION = "0.2.6"
3
3
  end
data/lib/env_bang.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "env_bang/version"
2
+ require "env_bang/formatter"
2
3
 
3
4
  class ENV_BANG
4
5
  class << self
@@ -11,17 +12,14 @@ class ENV_BANG
11
12
  options = args.last.is_a?(Hash) ? args.pop : {}
12
13
 
13
14
  unless ENV.has_key?(var)
14
- ENV[var] = options.fetch(:default) { formatted_error(var, description) }.to_s
15
+ ENV[var] = options.fetch(:default) { raise_formatted_error(var, description) }.to_s
15
16
  end
16
17
 
17
18
  vars[var] = options
18
19
  end
19
20
 
20
- def formatted_error(var, description)
21
- message = "Missing required environment variable: #{var}"
22
- message << "\n#{description}" if description
23
- indent = ' '
24
- raise KeyError.new "\n#{indent}#{message.gsub "\n", "\n#{indent}"}\n"
21
+ def raise_formatted_error(var, description)
22
+ raise KeyError.new Formatter.formatted_error(var, description)
25
23
  end
26
24
 
27
25
  def vars
@@ -16,17 +16,6 @@ describe ENV_BANG do
16
16
  }.must_raise KeyError
17
17
  end
18
18
 
19
- it "Includes provided description in error message" do
20
- ENV.delete('NOT_PRESENT')
21
-
22
- e = proc {
23
- ENV!.config do
24
- use 'NOT_PRESENT', 'You need a NOT_PRESENT var in your ENV'
25
- end
26
- }.must_raise(KeyError)
27
- e.message.must_include 'You need a NOT_PRESENT var in your ENV'
28
- end
29
-
30
19
  it "Uses provided default value if ENV var not already present" do
31
20
  ENV.delete('WASNT_PRESENT')
32
21
 
@@ -124,4 +113,38 @@ describe ENV_BANG do
124
113
  ENV!['FALSE'].class.must_equal String
125
114
  end
126
115
  end
116
+
117
+ describe "Formatting" do
118
+ it "Includes provided description in error message" do
119
+ ENV.delete('NOT_PRESENT')
120
+
121
+ e = proc {
122
+ ENV!.config do
123
+ use 'NOT_PRESENT', 'You need a NOT_PRESENT var in your ENV'
124
+ end
125
+ }.must_raise(KeyError)
126
+ e.message.must_include 'You need a NOT_PRESENT var in your ENV'
127
+ end
128
+
129
+ it "Removes indentation from provided descriptions" do
130
+ ENV.delete('NOT_PRESENT')
131
+
132
+ e = proc {
133
+ ENV!.config do
134
+ use 'NOT_PRESENT', <<-DESC
135
+ This multiline description
136
+ has a lot of indentation
137
+ varying from line to line
138
+ like so
139
+ DESC
140
+ end
141
+ }.must_raise(KeyError)
142
+ e.message.must_include <<-UNINDENTED
143
+ This multiline description
144
+ has a lot of indentation
145
+ varying from line to line
146
+ like so
147
+ UNINDENTED
148
+ end
149
+ end
127
150
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: env_bang
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Camenisch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-10 00:00:00.000000000 Z
11
+ date: 2014-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -56,6 +56,7 @@ files:
56
56
  - env_bang.gemspec
57
57
  - lib/env_bang-rails.rb
58
58
  - lib/env_bang.rb
59
+ - lib/env_bang/formatter.rb
59
60
  - lib/env_bang/version.rb
60
61
  - test/env_bang_test.rb
61
62
  - test/test_helper.rb