yaml2env 0.1.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/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in yaml2env.gemspec
4
+ gemspec
data/Guardfile ADDED
@@ -0,0 +1,10 @@
1
+ guard 'bundler' do
2
+ watch('Gemfile')
3
+ watch(/^.+\.gemspec/)
4
+ end
5
+
6
+ guard 'minitest' do
7
+ watch(%r|^spec/(.*)_spec\.rb|)
8
+ watch(%r|^lib/(.*)\.rb|) { |m| "spec/#{m[1]}_spec.rb" }
9
+ watch(%r|^spec/spec_helper\.rb|) { "spec" }
10
+ end
data/README.textile ADDED
@@ -0,0 +1,80 @@
1
+ h1. YAML2ENV
2
+
3
+ _Stash environment-specific configs in YAML-files and load them into ENV according to best-practices pattern - and auto-detects on-initialization if something is missing (skipping the "scratching the head"-part)._
4
+
5
+ h2. Motivation
6
+
7
+ For some rainy day...or next commit.
8
+
9
+ h2. Frameworks
10
+
11
+ @Yaml2env@ detects lean defaults for: *"Rack":https://github.com/rack/rack*, *"Rails":https://github.com/rails/rails*, and *"Sinatra":https://github.com/sinatra/sinatra*. Though by setting @Yaml2env.env@ and @Yaml2env.root@ manually you are good with any Ruby-project.
12
+
13
+ h2. Installation
14
+
15
+ Add to your @Gemfile@:
16
+
17
+ <pre>
18
+ gem 'yaml2env'
19
+ </pre>
20
+
21
+ ...and @bundle install@.
22
+
23
+ h2. Usage
24
+
25
+ To give this some context; this is how we use @Yaml2Env@ to initialize "Hoptoad":http://hoptoadapp.com:
26
+
27
+ <pre>
28
+ Yaml2Env.load 'config/hoptoad.yml', {'HOPTOAD_API_KEY' => 'api_key'}
29
+
30
+ if defined?(HoptoadNotifier)
31
+ HoptoadNotifier.configure do |config|
32
+ config.api_key = ENV['HOPTOAD_API_KEY']
33
+ end
34
+ end
35
+ </pre>
36
+
37
+ ...and the corresponding YAML config file:
38
+
39
+ <pre>
40
+ development:
41
+ api_key: NONE
42
+
43
+ staging:
44
+ api_key: 123abc
45
+
46
+ production:
47
+ api_key: abc123
48
+
49
+ test:
50
+ api_key: NONE
51
+ </pre>
52
+
53
+ ...which will yield:
54
+
55
+ <pre>
56
+ Rails.env = 'development'
57
+ ENV['HOPTOAD_API_KEY'] => 'NONE'
58
+
59
+ Rails.env = 'staging'
60
+ ENV['HOPTOAD_API_KEY'] => '123abc'
61
+
62
+ Rails.env = 'production'
63
+ ENV['HOPTOAD_API_KEY'] => 'abc123'
64
+
65
+ Rails.env = 'test'
66
+ ENV['HOPTOAD_API_KEY'] => 'NONE'
67
+
68
+ Rails.env = 'other'
69
+ => "Failed to load required config for environment 'other': /Users/grimen/development/example.com/config/hoptoad.yml"
70
+ </pre>
71
+
72
+ h2. Notes
73
+
74
+ This gem was developed for our own requirements at *"Merchii":http://github.com/merchii*, so feel free to send pull-requests with enhancements of any kind (features, bug-fixes, documentation, tests, etc.) to make it better or useful for you as well.
75
+
76
+ h2. License
77
+
78
+ Released under the MIT license.
79
+ Copyright (c) "Merchii":http://github.com/merchii, "Jonas Grimfelt":http://github.com/grimen
80
+
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,3 @@
1
+ module Yaml2env
2
+ VERSION = "0.1.0".freeze
3
+ end
data/lib/yaml2env.rb ADDED
@@ -0,0 +1,126 @@
1
+ require 'yaml'
2
+ require 'logger'
3
+
4
+ module Yaml2env
5
+
6
+ autoload :VERSION, 'yaml2env/version'
7
+
8
+ class Error < ::StandardError
9
+ end
10
+
11
+ class DetectionFailedError < Error
12
+ end
13
+
14
+ class ConfigLoadingError < Error
15
+ end
16
+
17
+ class MissingConfigKeyError < Error
18
+ end
19
+
20
+ # Hash tracking all of the loaded ENV-values via Yaml2env.load.
21
+ LOADED_ENV = {}
22
+
23
+ # Config root.
24
+ # Default: (auto-detect if possible)
25
+ @@root = nil
26
+
27
+ # Config environment.
28
+ # Default: (auto-detect if possible)
29
+ @@env = nil
30
+
31
+ # Logger to use for logging.
32
+ # Default: +::Logger.new(::STDOUT)+
33
+ @@logger = ::Logger.new(::STDOUT)
34
+
35
+ class << self
36
+
37
+ [:root, :env, :logger].each do |name|
38
+ define_method name do
39
+ class_variable_get "@@#{name}"
40
+ end
41
+ define_method "#{name}=" do |value|
42
+ class_variable_set "@@#{name}", value
43
+ end
44
+ end
45
+
46
+ alias :environment :env
47
+
48
+ def defaults!
49
+ @@root ||= nil
50
+ @@env ||= nil
51
+ @@logger ||= ::Logger.new(::STDOUT)
52
+ end
53
+
54
+ def configure
55
+ yield self
56
+ end
57
+
58
+ def load(config_path, required_keys = {}, optional_keys = {})
59
+ self.detect_root!
60
+ self.detect_env!
61
+
62
+ config ||= {}
63
+
64
+ begin
65
+ config_path = File.expand_path(File.join(self.root, config_path)).to_s
66
+ config = self.load_config_for_env(config_path, self.env)
67
+ rescue
68
+ raise ConfigLoadingError, "Failed to load required config for environment '#{self.env}': #{config_path}"
69
+ end
70
+
71
+ # Merge required + optional keys.
72
+ keys_values = optional_keys.merge(required_keys)
73
+
74
+ # Stash found keys from the config into ENV.
75
+ keys_values.each do |extected_env_key, extected_yaml_key|
76
+ ::Yaml2env::LOADED_ENV[extected_env_key.to_s] = ::ENV[extected_env_key.to_s] = config[extected_yaml_key.to_s]
77
+ self.logger.info ":: ENV[#{extected_env_key.inspect}] = #{::ENV[extected_env_key.to_s].inspect}" if self.logger?
78
+ end
79
+
80
+ # Raise error if any credentials are missing.
81
+ required_keys.keys.each do |env_key|
82
+ ::Yaml2env::LOADED_ENV[env_key.to_s] ||
83
+ raise(MissingConfigKeyError, "ENV variable '#{env_key}' needs to be set. Query: #{keys_values.inspect}. Found: #{config.inspect}")
84
+ end
85
+ end
86
+
87
+ def detect_root!
88
+ self.root ||= if ::ENV.key?('RACK_ROOT')
89
+ ::ENV['RACK_ROOT']
90
+ elsif defined?(::Rails)
91
+ ::Rails.root
92
+ elsif defined?(::Sinatra::Application)
93
+ ::Sinatra::Application.root
94
+ else
95
+ raise DetectionFailedError, "Failed to auto-detect Yaml.env (config environment). Specify environment before loading any configs/initializers using Yaml2env, e.g Yaml2env.env = 'development'."
96
+ end
97
+ end
98
+
99
+ def detect_env!
100
+ self.env ||= if ::ENV.key?('RACK_ENV')
101
+ ::ENV['RACK_ENV']
102
+ elsif defined?(::Rails)
103
+ ::Rails.env
104
+ elsif defined?(::Sinatra::Application)
105
+ ::Sinatra::Application.environment
106
+ else
107
+ raise DetectionFailedError, "Failed to auto-detect Yaml2env.root (config root). Specify environment before loading any configs/initializers using Yaml2env, e.g Yaml2env.env = 'development'."
108
+ end
109
+ end
110
+
111
+ def logger?
112
+ self.logger.respond_to?(:info)
113
+ end
114
+
115
+ protected
116
+ def load_config(config_file)
117
+ YAML.load(File.open(config_file))
118
+ end
119
+
120
+ def load_config_for_env(config_file, env)
121
+ config = self.load_config(config_file)
122
+ config[env]
123
+ end
124
+ end
125
+
126
+ end
@@ -0,0 +1,19 @@
1
+ development:
2
+ api_key: DEVELOPMENT_KEY
3
+ api_secret: DEVELOPMENT_SECRET
4
+
5
+ staging:
6
+ api_key: STAGING_KEY
7
+ api_secret: STAGING_SECRET
8
+
9
+ production:
10
+ api_key: PRODUCTION_KEY
11
+ api_secret: PRODUCTION_SECRET
12
+
13
+ test:
14
+ api_key: TEST_KEY
15
+ api_secret: TEST_SECRET
16
+
17
+ nyan_cat_mode:
18
+ api_key: NYAN_CAT_MODE_KEY
19
+ api_secret: NYAN_CAT_MODE_SECRET
@@ -0,0 +1,49 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'minitest/autorun'
3
+ require 'minitest/unit'
4
+ require 'minitest/spec'
5
+ require 'minitest/pride'
6
+ require 'minitest/mock'
7
+
8
+ require 'yaml2env'
9
+
10
+ def silence_all_warnings
11
+ # Ruby 1.8: Kernel.silence_warnings { yield }
12
+ old_verbose = $VERBOSE
13
+ $VERBOSE = nil
14
+ yield
15
+ $VERBOSE = old_verbose
16
+ end
17
+
18
+ def with_constants(constants, &block)
19
+ saved_constants = {}
20
+ constants.each do |constant, value|
21
+ saved_constants[constant] = Object.const_get(constant)
22
+ silence_all_warnings do
23
+ Object.const_set(constant, value)
24
+ end
25
+ end
26
+
27
+ begin
28
+ block.call
29
+ ensure
30
+ constants.each do |constant, value|
31
+ silence_all_warnings do
32
+ Object.const_set(constant, saved_constants[constant])
33
+ end
34
+ end
35
+ end
36
+ end
37
+
38
+ def with_values(object, new_values)
39
+ old_values = {}
40
+ new_values.each do |key, value|
41
+ old_values[key] = object.send key
42
+ object.send :"#{key}=", value
43
+ end
44
+ yield
45
+ ensure
46
+ old_values.each do |key, value|
47
+ object.send :"#{key}=", value
48
+ end
49
+ end
@@ -0,0 +1,351 @@
1
+ require 'spec/spec_helper'
2
+
3
+ describe Yaml2env do
4
+
5
+ before do
6
+ @valid_config_filename = 'example.yml'
7
+ @valid_config_path = File.join(File.dirname(__FILE__), 'fixtures', @valid_config_filename)
8
+ end
9
+
10
+ describe "::VERSION" do
11
+ it 'should be defined' do
12
+ defined?(::Yaml2env::VERSION)
13
+ end
14
+
15
+ it 'should be a valid version string (e.g. "0.0.1", or "0.0.1.rc1")' do
16
+ valid_version_string = /^\d+\.\d+\.\d+/
17
+ Yaml2env::VERSION.must_match valid_version_string
18
+ end
19
+ end
20
+
21
+ describe "::LOADED_ENV" do
22
+ it 'should be defined' do
23
+ defined?(::Yaml2env::LOADED_ENV)
24
+ end
25
+
26
+ # it 'should be a empty hash' do
27
+ # Yaml2env::LOADED_ENV.must_equal({})
28
+ # end
29
+ end
30
+
31
+ describe ".logger" do
32
+ before do
33
+ Yaml2env.defaults!
34
+ end
35
+
36
+ it 'should be defined' do
37
+ Yaml2env.must_respond_to :logger
38
+ end
39
+
40
+ it 'should be a valid logger' do
41
+ Yaml2env.logger.must_respond_to :info
42
+ Yaml2env.logger.must_respond_to :debug
43
+ Yaml2env.logger.must_respond_to :warn
44
+ end
45
+
46
+ it 'should be writable' do
47
+ class MyLogger < Logger
48
+ end
49
+ custom_logger = MyLogger.new(::STDOUT)
50
+ Yaml2env.logger = custom_logger
51
+ Yaml2env.logger.must_equal custom_logger
52
+ end
53
+ end
54
+
55
+ describe ".logger?" do
56
+ it 'should be defined' do
57
+ Yaml2env.must_respond_to :logger?
58
+ end
59
+
60
+ it 'should be a valid logger' do
61
+ Yaml2env.logger = nil
62
+ Yaml2env.logger?.must_equal false
63
+
64
+ Yaml2env.logger = Logger.new(::STDOUT)
65
+ Yaml2env.logger?.must_equal true
66
+ end
67
+ end
68
+
69
+ describe ".root" do
70
+ it 'should be defined' do
71
+ Yaml2env.must_respond_to :root
72
+ end
73
+
74
+ it 'should be writable' do
75
+ Yaml2env.root = "/tmp"
76
+ Yaml2env.root.must_equal "/tmp"
77
+ end
78
+ end
79
+
80
+ describe ".env" do
81
+ it 'should be defined' do
82
+ Yaml2env.must_respond_to :env
83
+ end
84
+
85
+ it 'should be writable' do
86
+ Yaml2env.root = "/tmp"
87
+ Yaml2env.root.must_equal "/tmp"
88
+ end
89
+ end
90
+
91
+ describe ".configure" do
92
+ it 'should be defined' do
93
+ Yaml2env.must_respond_to :configure
94
+ end
95
+
96
+ it 'should be possible to change settings in a block' do
97
+ Yaml2env.root = '/tmp/hello_world'
98
+ Yaml2env.env = 'staging'
99
+ Yaml2env.configure do |c|
100
+ c.root = '/home/grimen/projects/hello_world'
101
+ c.env = 'production'
102
+ end
103
+ Yaml2env.root.must_equal '/home/grimen/projects/hello_world'
104
+ Yaml2env.env.must_equal 'production'
105
+ end
106
+ end
107
+
108
+ describe ".detect_root!" do
109
+ it 'should be defined' do
110
+ Yaml2env.must_respond_to :detect_root!
111
+ end
112
+
113
+ it "should detect environment for Rack-apps - 1st" do
114
+ rack!(true)
115
+ rails!(true)
116
+ sinatra!(true)
117
+
118
+ Yaml2env.root = nil
119
+ Yaml2env.detect_root!
120
+ Yaml2env.root.must_equal '/home/grimen/development/rack-app'
121
+ end
122
+
123
+ it "should detect environment for Rails-apps - 2nd" do
124
+ rack!(false)
125
+ rails!(true)
126
+ sinatra!(true)
127
+
128
+ Yaml2env.root = nil
129
+ Yaml2env.detect_root!
130
+ Yaml2env.root.must_equal '/home/grimen/development/rails-app'
131
+ end
132
+
133
+ it "should detect environment for Sinatra-apps - 3rd" do
134
+ rack!(false)
135
+ rails!(false)
136
+ sinatra!(true)
137
+
138
+ Yaml2env.root = nil
139
+ Yaml2env.detect_root!
140
+ Yaml2env.root.must_equal '/home/grimen/development/sinatra-app'
141
+ end
142
+
143
+ it 'should complain if no environment could be detected' do
144
+ rack!(false)
145
+ rails!(false)
146
+ sinatra!(false)
147
+
148
+ Yaml2env.root = nil
149
+ assert_raises Yaml2env::DetectionFailedError do
150
+ Yaml2env.detect_root!
151
+ end
152
+ end
153
+ end
154
+
155
+ describe ".detect_env!" do
156
+ it 'should be defined' do
157
+ Yaml2env.must_respond_to :detect_env!
158
+ end
159
+
160
+ it "should detect environment for Rack-apps - 1st" do
161
+ rack!(true)
162
+ rails!(true)
163
+ sinatra!(true)
164
+
165
+ Yaml2env.env = nil
166
+ Yaml2env.detect_env!
167
+ Yaml2env.env.must_equal 'rack-env'
168
+ end
169
+
170
+ it "should detect environment for Rails-apps - 2nd" do
171
+ rack!(false)
172
+ rails!(true)
173
+ sinatra!(true)
174
+
175
+ Yaml2env.env = nil
176
+ Yaml2env.detect_env!
177
+ Yaml2env.env.must_equal 'rails-env'
178
+ end
179
+
180
+ it "should detect environment for Sinatra-apps - 3rd" do
181
+ rack!(false)
182
+ rails!(false)
183
+ sinatra!(true)
184
+
185
+ Yaml2env.env = nil
186
+ Yaml2env.detect_env!
187
+ Yaml2env.env.must_equal 'sinatra-env'
188
+ end
189
+
190
+ it 'should complain if no environment could be detected' do
191
+ rack!(false)
192
+ rails!(false)
193
+ sinatra!(false)
194
+
195
+ Yaml2env.env = nil
196
+ assert_raises Yaml2env::DetectionFailedError do
197
+ Yaml2env.detect_env!
198
+ end
199
+ end
200
+ end
201
+
202
+ describe "private/protected" do
203
+ describe ".load_config" do
204
+ it 'should be defined' do
205
+ Yaml2env.must_respond_to :load_config
206
+ end
207
+
208
+ it 'should load config for all environments for a valid config YAML file without issues' do
209
+ assert (config = Yaml2env.send(:load_config, @valid_config_path))
210
+ config.must_be_kind_of Hash
211
+ config.must_equal({
212
+ "development" => {"api_key"=>"DEVELOPMENT_KEY", "api_secret"=>"DEVELOPMENT_SECRET"},
213
+ "test" => {"api_key"=>"TEST_KEY", "api_secret"=>"TEST_SECRET"},
214
+ "staging" => {"api_key"=>"STAGING_KEY", "api_secret"=>"STAGING_SECRET"},
215
+ "production" => {"api_key"=>"PRODUCTION_KEY", "api_secret"=>"PRODUCTION_SECRET"},
216
+ "nyan_cat_mode" => {"api_key"=>"NYAN_CAT_MODE_KEY", "api_secret"=>"NYAN_CAT_MODE_SECRET"}
217
+ })
218
+ end
219
+ end
220
+
221
+ describe ".load_config_for_env" do
222
+ it 'should be defined' do
223
+ Yaml2env.must_respond_to :load_config_for_env
224
+ end
225
+
226
+ it 'should load config for a valid environment for a valid config YAML file without issues' do
227
+ env_config = Yaml2env.send(:load_config_for_env, @valid_config_path, 'development')
228
+ env_config.must_equal({
229
+ "api_key"=>"DEVELOPMENT_KEY",
230
+ "api_secret"=>"DEVELOPMENT_SECRET"
231
+ })
232
+
233
+ env_config = Yaml2env.send(:load_config_for_env, @valid_config_path, 'test')
234
+ env_config.must_equal({
235
+ "api_key"=>"TEST_KEY", "api_secret"=>"TEST_SECRET"
236
+ })
237
+
238
+ env_config = Yaml2env.send(:load_config_for_env, @valid_config_path, 'staging')
239
+ env_config.must_equal({
240
+ "api_key"=>"STAGING_KEY", "api_secret"=>"STAGING_SECRET"
241
+ })
242
+
243
+ env_config = Yaml2env.send(:load_config_for_env, @valid_config_path, 'production')
244
+ env_config.must_equal({
245
+ "api_key"=>"PRODUCTION_KEY",
246
+ "api_secret"=>"PRODUCTION_SECRET"
247
+ })
248
+
249
+ env_config = Yaml2env.send(:load_config_for_env, @valid_config_path, 'nyan_cat_mode')
250
+ env_config.must_equal({
251
+ "api_key"=>"NYAN_CAT_MODE_KEY",
252
+ "api_secret"=>"NYAN_CAT_MODE_SECRET"
253
+ })
254
+ end
255
+
256
+ it 'should not load config for a missing environment for a valid config YAML file without issues' do
257
+ env_config = Yaml2env.send(:load_config_for_env, @valid_config_path, 'missing')
258
+ env_config.must_equal(nil)
259
+ end
260
+ end
261
+ end
262
+
263
+ describe ".load" do
264
+ before do
265
+ Yaml2env.env = 'production'
266
+ Yaml2env.root = File.dirname(__FILE__)
267
+ Yaml2env.logger = nil
268
+ end
269
+
270
+ it 'should be defined' do
271
+ Yaml2env.must_respond_to :load
272
+ end
273
+
274
+ it 'should throw error if specified config file that do not exist' do
275
+ assert_raises Yaml2env::ConfigLoadingError do
276
+ Yaml2env.load 'null.yml'
277
+ end
278
+ end
279
+
280
+ it 'should not throw error if specified config file do exist' do
281
+ assert Yaml2env.load('fixtures/example.yml')
282
+ end
283
+
284
+ it 'should throw error if a specified constant-key do not exist in the config file' do
285
+ assert_raises Yaml2env::MissingConfigKeyError do
286
+ Yaml2env.load 'fixtures/example.yml', {:API_KEY => 'bla'}
287
+ end
288
+ end
289
+
290
+ it 'should not throw error if a specified constant-key do in fact exist in the config file' do
291
+ assert Yaml2env.load 'fixtures/example.yml', {:API_KEY => 'api_key', :API_SECRET => 'api_secret'}
292
+ end
293
+
294
+ it 'should set - with Yaml2env - loaded ENV-values' do
295
+ Yaml2env::LOADED_ENV = {}
296
+ Yaml2env.load 'fixtures/example.yml', {:API_KEY => 'api_key', :API_SECRET => 'api_secret'}
297
+ Yaml2env::LOADED_ENV.must_equal({"API_SECRET" => "PRODUCTION_SECRET", "API_KEY" => "PRODUCTION_KEY"})
298
+ end
299
+ end
300
+
301
+ protected
302
+
303
+ def rack!(loaded)
304
+ if loaded
305
+ ::ENV['RACK_ROOT'] = '/home/grimen/development/rack-app'
306
+ ::ENV['RACK_ENV'] = 'rack-env'
307
+ else
308
+ ::ENV['RACK_ROOT'] = nil
309
+ ::ENV['RACK_ENV'] = nil
310
+ end
311
+ end
312
+
313
+ def rails!(loaded)
314
+ if loaded
315
+ eval <<-EVAL
316
+ unless defined?(::Rails)
317
+ module Rails
318
+ class << self
319
+ attr_accessor :root, :env
320
+ end
321
+ end
322
+ end
323
+ EVAL
324
+ Rails.root = '/home/grimen/development/rails-app'
325
+ Rails.env = 'rails-env'
326
+ else
327
+ Object.send(:remove_const, :Rails) if defined?(::Rails)
328
+ end
329
+ end
330
+
331
+ def sinatra!(loaded)
332
+ if loaded
333
+ eval <<-EVAL
334
+ unless defined?(::Sinatra::Application)
335
+ module Sinatra
336
+ class Application
337
+ class << self
338
+ attr_accessor :root, :environment
339
+ end
340
+ end
341
+ end
342
+ end
343
+ EVAL
344
+ Sinatra::Application.root = '/home/grimen/development/sinatra-app'
345
+ Sinatra::Application.environment = 'sinatra-env'
346
+ else
347
+ Object.send(:remove_const, :Sinatra) if defined?(::Sinatra::Application)
348
+ end
349
+ end
350
+
351
+ end
data/yaml2env.gemspec ADDED
@@ -0,0 +1,28 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "yaml2env/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "yaml2env"
7
+ s.version = Yaml2env::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Merchii", "Jonas Grimfelt"]
10
+ s.email = ["jonas@merchii.com", "grimen@gmail.com"]
11
+ s.homepage = "http://github.com/merchii/yaml2env"
12
+ s.summary = %q{YAML => ENV for environment-specific configs}
13
+ s.description = %q{Stash environment-specific configs in YAML-files and load them into ENV according to best-practices pattern - and auto-detects on-initialization if something is missing (skipping the "scratching the head"-part).}
14
+
15
+ s.required_rubygems_version = '>= 1.3.6'
16
+ s.rubyforge_project = s.name
17
+
18
+ s.add_development_dependency 'bundler', '~> 1.0.0'
19
+ s.add_development_dependency 'minitest'
20
+ s.add_development_dependency 'guard'
21
+ s.add_development_dependency 'guard-bundler'
22
+ s.add_development_dependency 'guard-minitest'
23
+
24
+ s.files = `git ls-files`.split("\n")
25
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
26
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
27
+ s.require_paths = ["lib"]
28
+ end
metadata ADDED
@@ -0,0 +1,155 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: yaml2env
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Merchii
14
+ - Jonas Grimfelt
15
+ autorequire:
16
+ bindir: bin
17
+ cert_chain: []
18
+
19
+ date: 2011-07-25 00:00:00 +02:00
20
+ default_executable:
21
+ dependencies:
22
+ - !ruby/object:Gem::Dependency
23
+ name: bundler
24
+ prerelease: false
25
+ requirement: &id001 !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ hash: 23
31
+ segments:
32
+ - 1
33
+ - 0
34
+ - 0
35
+ version: 1.0.0
36
+ type: :development
37
+ version_requirements: *id001
38
+ - !ruby/object:Gem::Dependency
39
+ name: minitest
40
+ prerelease: false
41
+ requirement: &id002 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ hash: 3
47
+ segments:
48
+ - 0
49
+ version: "0"
50
+ type: :development
51
+ version_requirements: *id002
52
+ - !ruby/object:Gem::Dependency
53
+ name: guard
54
+ prerelease: false
55
+ requirement: &id003 !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ hash: 3
61
+ segments:
62
+ - 0
63
+ version: "0"
64
+ type: :development
65
+ version_requirements: *id003
66
+ - !ruby/object:Gem::Dependency
67
+ name: guard-bundler
68
+ prerelease: false
69
+ requirement: &id004 !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ hash: 3
75
+ segments:
76
+ - 0
77
+ version: "0"
78
+ type: :development
79
+ version_requirements: *id004
80
+ - !ruby/object:Gem::Dependency
81
+ name: guard-minitest
82
+ prerelease: false
83
+ requirement: &id005 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ hash: 3
89
+ segments:
90
+ - 0
91
+ version: "0"
92
+ type: :development
93
+ version_requirements: *id005
94
+ description: Stash environment-specific configs in YAML-files and load them into ENV according to best-practices pattern - and auto-detects on-initialization if something is missing (skipping the "scratching the head"-part).
95
+ email:
96
+ - jonas@merchii.com
97
+ - grimen@gmail.com
98
+ executables: []
99
+
100
+ extensions: []
101
+
102
+ extra_rdoc_files: []
103
+
104
+ files:
105
+ - .gitignore
106
+ - Gemfile
107
+ - Guardfile
108
+ - README.textile
109
+ - Rakefile
110
+ - lib/yaml2env.rb
111
+ - lib/yaml2env/version.rb
112
+ - spec/fixtures/example.yml
113
+ - spec/spec_helper.rb
114
+ - spec/yaml2env_spec.rb
115
+ - yaml2env.gemspec
116
+ has_rdoc: true
117
+ homepage: http://github.com/merchii/yaml2env
118
+ licenses: []
119
+
120
+ post_install_message:
121
+ rdoc_options: []
122
+
123
+ require_paths:
124
+ - lib
125
+ required_ruby_version: !ruby/object:Gem::Requirement
126
+ none: false
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ hash: 3
131
+ segments:
132
+ - 0
133
+ version: "0"
134
+ required_rubygems_version: !ruby/object:Gem::Requirement
135
+ none: false
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ hash: 23
140
+ segments:
141
+ - 1
142
+ - 3
143
+ - 6
144
+ version: 1.3.6
145
+ requirements: []
146
+
147
+ rubyforge_project: yaml2env
148
+ rubygems_version: 1.5.0
149
+ signing_key:
150
+ specification_version: 3
151
+ summary: YAML => ENV for environment-specific configs
152
+ test_files:
153
+ - spec/fixtures/example.yml
154
+ - spec/spec_helper.rb
155
+ - spec/yaml2env_spec.rb