dice_bag 0.8.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NDlkYzIxYjM3Zjk1YTM2YThhYTc2OWQ0YjE1MGZiYzg1YTUwMzlmOQ==
5
- data.tar.gz: !binary |-
6
- MjBkY2RhMWU0ZTI0ZWMzMDhiM2JkMTczYmRhYmIzYWIwYWU2YTFjYg==
2
+ SHA1:
3
+ metadata.gz: 60e5efa65c58bb068ea937851e75ace6470f3b0c
4
+ data.tar.gz: 56c46bf21478f61b2af8e5a3d689fc0204a4ef73
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- NTU5ZTQzMzgzODlmN2ZmYzNiOTczMTQzODRlYzA2YTUxNjBlOTNiN2MzZGY5
10
- OTc2OGZjZTI2ZjcwYjQ2YTA3YjA5YWEyZDg5ZDBlMmE1MDNhM2EwMmI4YWY5
11
- ZmNhZWRhZWYxMzNjZmFhMjVjMDExMmRiOWY3ZWMzODkyYTVhM2U=
12
- data.tar.gz: !binary |-
13
- MDJlZGIzNDgzMWIzMDhkYTJlYzJlMGU4Y2NiYWQ3ZDYxMmQxZWU4NGFjOGRm
14
- MzdhYzhhM2ZjMmZlMjM1MWNiZDdhNmZiN2VjMzc1NDU3YTgxODQ3MjY2Yjll
15
- ZTI5MjMwMThlMzJlYzM3ZGQ0NGZjMDY2NjgxOWVmMzJiMzJkMjY=
6
+ metadata.gz: 27e0e05915afc78875d92a57a1587f5efd75282f9985c124f28f6cbd59db012e77e75d2b51e97e8ab6d11ca5917774c0a1641c98a928d2d9ab63e704c6fb9df7
7
+ data.tar.gz: 95970fb430a7b7fac1c662d6b27033d5db905be6598f9aea21bc802366e1d19345241c62af9fa1a49dd307723cd134b49240f574cb6c0dca038b33ec514c8fd0
@@ -16,7 +16,28 @@ module DiceBag
16
16
  end
17
17
 
18
18
  def method_missing(name)
19
- ENV[name.to_s.upcase]
19
+ if name.to_s.end_with?('!')
20
+ ensured_in_production(name)
21
+ else
22
+ ENV[name.to_s.upcase]
23
+ end
24
+ end
25
+
26
+ private
27
+
28
+ def ensured_in_production(name)
29
+ variable_name = name.to_s.chomp('!').upcase
30
+ value = ENV[variable_name]
31
+ if in_production? && value.nil?
32
+ raise "Environment variable #{variable_name} required in production but it was not provided"
33
+ end
34
+ value
35
+ end
36
+
37
+ def in_production?
38
+ (defined?(Rails) && Rails.env.production?) ||
39
+ (defined?(Sinatra) && Sinatra::Application.production?) ||
40
+ ENV['RACK_ENV'] == 'production'
20
41
  end
21
42
 
22
43
  # This class acts like +Configuration+ but with a prefix applied to the
@@ -5,7 +5,7 @@ common: &default_settings
5
5
  app_name: <%= configured.domain || 'PROJECT_NAME' %>
6
6
  enabled: <%= configured.enable_newrelic || false %>
7
7
  log_level: <%= configured.new_relic_debug == 'true' ? 'debug' : 'info' %>
8
- ssl: false
8
+ ssl: true
9
9
  apdex_t: 0.5
10
10
  capture_params: false
11
11
  transaction_tracer:
@@ -1,3 +1,3 @@
1
1
  module DiceBag
2
- VERSION = '0.8.0'
2
+ VERSION = '0.9.0'
3
3
  end
data/spec/command_spec.rb CHANGED
@@ -6,7 +6,7 @@ describe DiceBag::Project do
6
6
 
7
7
  describe "#name" do
8
8
  it "should give me a default name for non Rails apps" do
9
- project.name.should == DiceBag::Project::DEFAULT_NAME
9
+ expect(project.name).to eq(DiceBag::Project::DEFAULT_NAME)
10
10
  end
11
11
  end
12
12
 
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+ require 'dice_bag/configuration'
3
+ module DiceBag
4
+
5
+ shared_examples_for 'configuration in production' do
6
+ it 'returns values ending in ! available in the environment' do
7
+ expect(Configuration.new.test_var!).to eq(value)
8
+ end
9
+ it 'returns values not ending in ! not available in the environment' do
10
+ expect(Configuration.new.idontexist).to eq(nil)
11
+ end
12
+ it 'raises an exception when the value ends in ! and is not available in the environment' do
13
+ expect{Configuration.new.idontexist!}.to raise_exception(StandardError)
14
+ end
15
+ end
16
+
17
+
18
+ RSpec.describe Configuration do
19
+ let(:value) { '42' }
20
+ before(:each) do
21
+ ENV['TEST_VAR'] = value
22
+ end
23
+
24
+ it "returns values" do
25
+ expect(Configuration.new.test_var).to eq(value)
26
+ end
27
+ it "returns values ending in !" do
28
+ expect(Configuration.new.test_var!).to eq(value)
29
+ end
30
+
31
+ context 'Running in Rails production environment' do
32
+ before(:each) do
33
+ rails = class_double('Rails')
34
+ allow(rails).to receive_message_chain("env.production?") { true }
35
+ stub_const("Rails", rails)
36
+ end
37
+ it_behaves_like 'configuration in production'
38
+ end
39
+
40
+ context 'Running in Sinatra production environment' do
41
+ before(:each) do
42
+ sinatra = class_double('Sinatra')
43
+ allow(sinatra).to receive(:production?).and_return(true)
44
+ stub_const("Sinatra::Application", sinatra)
45
+ end
46
+ it_behaves_like 'configuration in production'
47
+ end
48
+
49
+ context 'Running in a rack app production environment' do
50
+ # Not the most elegant but given how much we use ENV in these tests, does seem good enough
51
+ before(:each) do
52
+ ENV['RACK_ENV'] = 'production'
53
+ end
54
+ after(:each) do
55
+ ENV['RACK_ENV'] = nil
56
+ end
57
+ it_behaves_like 'configuration in production'
58
+ end
59
+
60
+ end
61
+ end
data/spec/spec_helper.rb CHANGED
@@ -5,7 +5,6 @@ require 'dice_bag'
5
5
  require 'rspec'
6
6
 
7
7
  RSpec.configure do |config|
8
- config.treat_symbols_as_metadata_keys_with_true_values = true
9
8
  config.run_all_when_everything_filtered = true
10
9
  config.filter_run :focus
11
10
  config.order = 'random'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dice_bag
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Smith
@@ -9,67 +9,65 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-06-03 00:00:00.000000000 Z
12
+ date: 2015-08-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ! '>='
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
20
  version: '0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ! '>='
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: aruba
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ~>
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
34
  version: 0.5.1
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ~>
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: 0.5.1
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rspec
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ~>
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: '2.12'
48
+ version: '3.0'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ~>
53
+ - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '2.12'
55
+ version: '3.0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: bundler
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ! '>='
60
+ - - ">="
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ! '>='
67
+ - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
- description: Dice Bag is a library of rake tasks for configuring web apps in the style
71
- of The Twelve-Factor App. It also provides continuous integration tasks that rely
72
- on the configuration tasks.
70
+ description:
73
71
  email:
74
72
  - asmith@mdsol.com
75
73
  - jcarres@mdsol.com
@@ -100,10 +98,10 @@ files:
100
98
  - lib/dice_bag/version.rb
101
99
  - lib/dice_bag/warning.rb
102
100
  - spec/command_spec.rb
101
+ - spec/configuration_spec.rb
103
102
  - spec/spec_helper.rb
104
103
  homepage: https://github.com/mdsol/dice_bag
105
- licenses:
106
- - MIT
104
+ licenses: []
107
105
  metadata: {}
108
106
  post_install_message:
109
107
  rdoc_options: []
@@ -111,12 +109,12 @@ require_paths:
111
109
  - lib
112
110
  required_ruby_version: !ruby/object:Gem::Requirement
113
111
  requirements:
114
- - - ! '>='
112
+ - - ">="
115
113
  - !ruby/object:Gem::Version
116
114
  version: '0'
117
115
  required_rubygems_version: !ruby/object:Gem::Requirement
118
116
  requirements:
119
- - - ! '>='
117
+ - - ">="
120
118
  - !ruby/object:Gem::Version
121
119
  version: '0'
122
120
  requirements: []
@@ -129,5 +127,6 @@ summary: Dice Bag is a library of rake tasks for configuring web apps in the sty
129
127
  on the configuration tasks.
130
128
  test_files:
131
129
  - spec/command_spec.rb
130
+ - spec/configuration_spec.rb
132
131
  - spec/spec_helper.rb
133
132
  has_rdoc: