app_config 2.0.1 → 2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 57a758d17f3cf8b5932064d8daaba948f2b0e51a
4
- data.tar.gz: a9851dc01c313b651654a52a1b8ad8e397f82380
3
+ metadata.gz: 85532501e786eca705ac6224a529a1f1ea596b1f
4
+ data.tar.gz: cf1e1d838361c7bca2135db8274a52c2f9cef843
5
5
  SHA512:
6
- metadata.gz: d7e65918fd775a55c5611d24084fe36ccc212b609fe4a864379e357b4a2f5ead09061a6c992ea40d1f80ea240e5ba75fd7a65de915665215f6009dcb2265d4b8
7
- data.tar.gz: 1f7d96ba6828400f2784cbc523b4078697d8cce396b2bd8abe221f130070d69f9a5ccad961402500aa2b6012337f3be4bfe9338323dd5e00f63c1708aace227f
6
+ metadata.gz: 7ef79b6d4670050d2d583599d54889c2e219e71e7a8833b39f22a062a842fa919eaa06a8d74f4642548f3db3b8797cd016d66658a6ce31c0970b501ea506c9a2
7
+ data.tar.gz: e39497d9599c666bc615ff3ab3b669c977ce5b141cf6dff6506d54cbe50e7a3b21170a7776ace29ed5bd2439a340c10cecbdd6e3bcc2f6955dec5c6aa000fc5b
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- app_config (2.0.1)
4
+ app_config (2.1.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -12,6 +12,7 @@ GEM
12
12
  mongo (1.3.1)
13
13
  bson (>= 1.3.1)
14
14
  multi_json (1.3.6)
15
+ pg (0.15.1)
15
16
  rake (0.9.2.2)
16
17
  redcarpet (2.3.0)
17
18
  rspec (2.10.0)
@@ -35,8 +36,9 @@ DEPENDENCIES
35
36
  app_config!
36
37
  bson_ext
37
38
  mongo
39
+ pg
38
40
  rake
39
41
  redcarpet
40
- rspec (~> 2.10.0)
42
+ rspec
41
43
  simplecov
42
44
  yard
data/README.md CHANGED
@@ -6,74 +6,144 @@ An easy to use, customizable library to easily store and retrieve application
6
6
  AppConfig requires at least Ruby 1.9.
7
7
 
8
8
 
9
- ## Deprecation Note
10
-
11
- Version `2.0` is **not** backwards compatible with the `1.x` branch.
12
-
13
- See the [wiki](https://github.com/Oshuma/app_config/wiki) for upgrade instructions.
14
-
15
-
16
9
  ## Usage
17
10
 
18
- Usage is simple. Just pass either a hash of options, or a block, to {AppConfig.setup!}.
11
+ Usage is simple. Just pass either a hash of options, or a block, to `AppConfig.setup!`.
19
12
 
20
13
  In it's simplest form, you can use it like so:
21
14
 
22
- AppConfig.setup!(:admin_email => 'admin@example.com')
23
- # ..or..
24
- AppConfig.setup! do |config|
25
- config.admin_email = 'admin@example.com'
26
- end
15
+ ```ruby
16
+ AppConfig.setup!(admin_email: 'admin@example.com')
17
+ # ..or..
18
+ AppConfig.setup! do |config|
19
+ config.admin_email = 'admin@example.com'
20
+ end
27
21
 
28
- AppConfig.admin_email # => 'admin@example.com'
22
+ AppConfig.admin_email # => 'admin@example.com'
23
+ ```
29
24
 
30
25
  You may also specify the storage method along with options specific to that storage method.
31
26
  Check the [wiki](https://github.com/Oshuma/app_config/wiki) for more usage examples.
32
27
 
33
28
 
34
- ## AppConfig::Storage::YAML
29
+ ## YAML
35
30
 
36
31
  Given this YAML file:
37
32
 
38
- ---
39
- admin_email: 'admin@example.com'
40
- api_name: 'Supr Webz 2.0'
41
- api_key: 'SUPERAWESOMESERVICE'
33
+ ```yaml
34
+ ---
35
+ admin_email: 'admin@example.com'
36
+ api_name: 'Supr Webz 2.0'
37
+ api_key: 'SUPERAWESOMESERVICE'
38
+ ```
42
39
 
43
40
  Use it like so:
44
41
 
45
- AppConfig.setup!(:yaml => '/path/to/app_config.yml')
42
+ ```ruby
43
+ AppConfig.setup!(yaml: '/path/to/app_config.yml')
46
44
 
47
- # Later on...
48
- AppConfig.admin_email # => 'admin@example.com'
49
- AppConfig.api_name # => 'Supr Webz 2.0'
50
- AppConfig.api_key # => 'SUPERAWESOMESERVICE'
45
+ # Later on...
46
+ AppConfig.admin_email # => 'admin@example.com'
47
+ AppConfig.api_name # => 'Supr Webz 2.0'
48
+ AppConfig.api_key # => 'SUPERAWESOMESERVICE'
49
+ ```
51
50
 
52
51
 
53
- ## AppConfig::Storage::Mongo
52
+ ## Mongo
54
53
 
55
- You can pass a `:mongo` options hash to {AppConfig.setup!} which should contain
56
- configuration values for a Mongo database. Check the {AppConfig::Storage::Mongo::DEFAULTS}
54
+ You can pass a `:mongo` options hash to `AppConfig.setup!` which should contain
55
+ configuration values for a Mongo database. Check the `AppConfig::Storage::Mongo::DEFAULTS`
57
56
  constant for the default Mongo connection options.
58
57
 
59
- mongo_opts = {
60
- :host => 'localhost', # default
61
- :database => 'app_config', # default
62
- :collection => 'app_config' # default
63
- }
58
+ ```ruby
59
+ # These are the defaults.
60
+ mongo_opts = {
61
+ host: 'localhost',
62
+ database: 'app_config',
63
+ collection: 'app_config'
64
+ }
64
65
 
65
- AppConfig.setup!(:mongo => mongo_opts)
66
+ AppConfig.setup!(mongo: mongo_opts)
66
67
 
67
- AppConfig.admin_email # => 'admin@example.com'
68
+ AppConfig.admin_email # => 'admin@example.com'
68
69
 
69
- # Override an existing value and save to the database:
70
- AppConfig.admin_email = 'other_admin@example.com'
71
- AppConfig.save!
70
+ # Override an existing value and save to the database:
71
+ AppConfig.admin_email = 'other_admin@example.com'
72
+ AppConfig.save!
73
+ ```
72
74
 
73
75
  The values are read/saved (by default) to the `app_config` database and
74
76
  `app_config` collection. These defaults can be overridden, however, which
75
77
  might lend well to versioned configurations; collection names such as
76
78
  `app_config_v1`, `app_config_v2`, etc.
77
79
 
78
- AppConfig.setup!(:mongo => { :collection => 'app_config_v2' })
80
+ ```ruby
81
+ AppConfig.setup!(mongo: { collection: 'app_config_v2' })
82
+ ```
83
+
84
+
85
+ ## PostgreSQL
86
+
87
+ Using PostgreSQL is similar to a Mongo setup.
88
+ The only current requirement is that the table have a primary key named `id`.
89
+ All other columns are used as configuration keys.
90
+
91
+ **Note:** The database and schema must exist prior to calling `AppConfig.setup!`.
92
+
93
+ Given this schema:
94
+
95
+ ```sql
96
+ CREATE TABLE app_config (
97
+ id bigserial NOT NULL PRIMARY KEY,
98
+ admin_email character varying(255) DEFAULT 'admin@example.com'::character varying,
99
+ api_key character varying(255) DEFAULT 'SOME_API_KEY'::character varying
100
+ );
101
+ ```
102
+
103
+ Setup AppConfig:
104
+
105
+ ```ruby
106
+ # These are the defaults.
107
+ postgres_opts = {
108
+ host: 'localhost',
109
+ port: 5432,
110
+ dbname: 'app_config',
111
+ table: 'app_config',
112
+
113
+ # If these are nil (or omitted), the PostgreSQL defaults will be used.
114
+ user: nil,
115
+ password: nil,
116
+ }
117
+
118
+ AppConfig.setup!(postgres: postgres_opts)
119
+
120
+ AppConfig.admin_email # => 'admin@example.com'
121
+
122
+ # Override an existing value and save to the database:
123
+ AppConfig.admin_email = 'another_admin@example.com'
124
+ AppConfig.save!
125
+ ```
126
+
127
+
128
+ ## Using Storage Defaults
129
+
130
+ All storage options accept `true` as a value, which uses the default options for that storage.
131
+
132
+ For example, to use the [Mongo](https://github.com/Oshuma/app_config/blob/master/lib/app_config/storage/mongo.rb#L9) defaults:
133
+
134
+ ```ruby
135
+ AppConfig.setup!(mongo: true)
136
+ ```
137
+
138
+ ### Storage Defaults
139
+
140
+ * [Mongo](https://github.com/Oshuma/app_config/blob/master/lib/app_config/storage/mongo.rb#L9)
141
+ * [Postgres](https://github.com/Oshuma/app_config/blob/master/lib/app_config/storage/postgres.rb#L8)
142
+ * [YAML](https://github.com/Oshuma/app_config/blob/master/lib/app_config/storage/yaml.rb#L9)
143
+
144
+
145
+ ## Deprecation Note
146
+
147
+ Version `2.x` is **not** backwards compatible with the `1.x` branch.
79
148
 
149
+ See the [wiki](https://github.com/Oshuma/app_config/wiki) for current usage instructions.
data/app_config.gemspec CHANGED
@@ -14,9 +14,10 @@ Gem::Specification.new do |s|
14
14
 
15
15
  s.add_development_dependency 'bson_ext'
16
16
  s.add_development_dependency 'mongo'
17
+ s.add_development_dependency 'pg'
17
18
  s.add_development_dependency 'rake'
18
19
  s.add_development_dependency 'redcarpet'
19
- s.add_development_dependency 'rspec', '~> 2.10.0'
20
+ s.add_development_dependency 'rspec'
20
21
  s.add_development_dependency 'simplecov'
21
22
  s.add_development_dependency 'yard'
22
23
 
data/lib/app_config.rb CHANGED
@@ -21,6 +21,8 @@ module AppConfig
21
21
  @@storage = AppConfig::Storage::YAML.new(@@options.delete(:yaml))
22
22
  elsif @@options[:mongo]
23
23
  @@storage = AppConfig::Storage::Mongo.new(@@options.delete(:mongo))
24
+ elsif @@options[:postgres]
25
+ @@storage = AppConfig::Storage::Postgres.new(@@options.delete(:postgres))
24
26
  else
25
27
  @@storage = AppConfig::Storage::Base.new
26
28
  end
@@ -1,10 +1,8 @@
1
1
  module AppConfig
2
2
  module Storage
3
- # Used when creating a new, infinitely nested Hash.
4
- DEEP_HASH = lambda { |h, k| h[k] = Hash.new(&h.default_proc) }
5
-
6
- autoload :Base, 'app_config/storage/base'
7
- autoload :Mongo, 'app_config/storage/mongo'
8
- autoload :YAML, 'app_config/storage/yaml'
3
+ autoload :Base, 'app_config/storage/base'
4
+ autoload :Mongo, 'app_config/storage/mongo'
5
+ autoload :Postgres, 'app_config/storage/postgres'
6
+ autoload :YAML, 'app_config/storage/yaml'
9
7
  end
10
8
  end
@@ -7,18 +7,23 @@ module AppConfig
7
7
  class Mongo < Storage::Base
8
8
 
9
9
  DEFAULTS = {
10
- :host => 'localhost',
11
- :port => '27017',
12
- :database => 'app_config',
13
- :collection => 'app_config',
14
- :user => nil,
15
- :password => nil
10
+ host: 'localhost',
11
+ port: 27017,
12
+ database: 'app_config',
13
+ collection: 'app_config',
14
+ username: nil,
15
+ password: nil,
16
16
  }
17
17
 
18
18
  def initialize(options)
19
- @connected = false
20
- @options = DEFAULTS.merge(options)
21
- setup_connection
19
+ # Allows passing `true` as an option.
20
+ if options.is_a?(Hash)
21
+ @options = DEFAULTS.merge(options)
22
+ else
23
+ @options = DEFAULTS
24
+ end
25
+
26
+ setup_connection!
22
27
  fetch_data!
23
28
  end
24
29
 
@@ -35,13 +40,13 @@ module AppConfig
35
40
 
36
41
  private
37
42
 
38
- def setup_connection
43
+ def setup_connection!
39
44
  @connection = ::Mongo::Connection.new(@options[:host], @options[:port].to_i)
40
- authenticate_connection if @options[:user] && @options[:password]
45
+ authenticate_connection! if @options[:username] && @options[:password]
41
46
  end
42
47
 
43
- def authenticate_connection
44
- database.authenticate(@options[:user], @options[:password])
48
+ def authenticate_connection!
49
+ database.authenticate(@options[:username], @options[:password])
45
50
  end
46
51
 
47
52
  def connected?
@@ -0,0 +1,76 @@
1
+ module AppConfig
2
+ module Storage
3
+
4
+ require 'pg'
5
+
6
+ class Postgres < Storage::Base
7
+
8
+ DEFAULTS = {
9
+ host: 'localhost',
10
+ port: 5432,
11
+ dbname: 'app_config',
12
+ table: 'app_config',
13
+ user: nil,
14
+ password: nil,
15
+ }
16
+
17
+ def initialize(options)
18
+ # Allows passing `true` as an option.
19
+ if options.is_a?(Hash)
20
+ @options = DEFAULTS.merge(options)
21
+ else
22
+ @options = DEFAULTS
23
+ end
24
+
25
+ # HACK: Remove the `user` and `password` keys if they're nil, since `@options` is passed directly to `PG.connect`.
26
+ @options.delete(:user) if @options[:user].nil?
27
+ @options.delete(:password) if @options[:password].nil?
28
+
29
+ @table = @options.delete(:table)
30
+
31
+ setup_connection!
32
+ fetch_data!
33
+ end
34
+
35
+ # Saves the data back to Postgres. Returns `true`/`false`.
36
+ def save!
37
+ # Build the `SET foo = 'bar', ...` string for the UPDATE query.
38
+ data_hash = @data.to_h
39
+ data_hash.delete(:id) # Remove the primary key (id) from the SET attributes.
40
+ set_attrs = data_hash.map { |k, v| "#{k} = '#{v}'" }.join(', ')
41
+
42
+ update_query = "UPDATE #{@table} SET #{set_attrs} WHERE id = #{@id}"
43
+
44
+ result = @connection.exec(update_query)
45
+ result.result_status == PG::Constants::PGRES_COMMAND_OK
46
+ end
47
+
48
+ private
49
+
50
+ def fetch_data!
51
+ raise 'Not connected to PostgreSQL' unless connected?
52
+
53
+ # TODO: This might not be the best solution here.
54
+ # It currently uses the newest row, based on a primary key of `id`.
55
+ # Maybe provide a way to configure what row gets returned.
56
+ fetch_query = "SELECT * FROM #{@table} ORDER BY id DESC LIMIT 1"
57
+
58
+ @connection.exec(fetch_query) do |result|
59
+ result.each do |row|
60
+ @data = OpenStruct.new(row)
61
+ @id = @data.id
62
+ end
63
+ end
64
+ end
65
+
66
+ def connected?
67
+ @connection && @connection.status == PG::Constants::CONNECTION_OK
68
+ end
69
+
70
+ def setup_connection!
71
+ @connection = PG.connect(@options)
72
+ end
73
+
74
+ end
75
+ end
76
+ end
@@ -13,6 +13,9 @@ module AppConfig
13
13
  #
14
14
  # Defaults to `Dir.home/.app_config.yml`
15
15
  def initialize(path = DEFAULT_PATH)
16
+ # Allows passing `true` as an option.
17
+ path = DEFAULT_PATH if path == true
18
+
16
19
  # Make sure to use the top-level YAML module here.
17
20
  @data = OpenStruct.new(::YAML.load_file(path))
18
21
  end
@@ -1,3 +1,3 @@
1
1
  module AppConfig
2
- VERSION = '2.0.1'
2
+ VERSION = '2.1.0'
3
3
  end
@@ -16,12 +16,20 @@ describe AppConfig::Storage::Mongo do
16
16
  AppConfig.api_key = 'SOME_NEW_API_KEY'
17
17
  AppConfig.api_key.should == 'SOME_NEW_API_KEY'
18
18
 
19
- AppConfig.class_variable_get(:@@storage).should_receive(:save!)
20
- AppConfig.save!
19
+ AppConfig.save!.should be_true
21
20
  end
22
21
 
23
22
  it 'should have a @_id variable for the Mongo ID' do
24
- AppConfig.class_variable_get(:@@storage).
25
- instance_variable_get(:@_id).should_not be_nil
23
+ AppConfig.class_variable_get(:@@storage)
24
+ .instance_variable_get(:@_id).should_not be_nil
25
+ end
26
+
27
+ it "uses the defaults when 'true' is passed" do
28
+ AppConfig.reset!
29
+ AppConfig.setup!(mongo: true)
30
+
31
+ AppConfig.class_variable_get(:@@storage)
32
+ .instance_variable_get(:@options)
33
+ .should == AppConfig::Storage::Mongo::DEFAULTS
26
34
  end
27
35
  end
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+
3
+ describe AppConfig::Storage::Postgres do
4
+
5
+ before(:all) do
6
+ config_for_postgres
7
+ end
8
+
9
+ it 'should have some values' do
10
+ AppConfig.api_key.should_not be_nil
11
+ end
12
+
13
+ it 'should update the values' do
14
+ new_api_key = 'SOME_NEW_API_KEY'
15
+ AppConfig.api_key = new_api_key
16
+
17
+ AppConfig.save!.should be_true
18
+
19
+ # Reload AppConfig
20
+ config_for_postgres
21
+
22
+ AppConfig.api_key.should == new_api_key
23
+ end
24
+
25
+ it "uses the defaults when 'true' is passed" do
26
+ AppConfig.reset!
27
+
28
+ # Hack to use a test database as the 'default'.
29
+ AppConfig::Storage::Postgres::DEFAULTS[:dbname] = 'app_config_test'
30
+
31
+ begin
32
+ AppConfig.setup!(postgres: true)
33
+ rescue PG::Error => e
34
+ config_for_postgres
35
+ end
36
+
37
+ AppConfig.class_variable_get(:@@storage)
38
+ .instance_variable_get(:@options)
39
+ .should == AppConfig::Storage::Postgres::DEFAULTS
40
+ end
41
+ end
@@ -9,7 +9,7 @@ describe AppConfig::Storage::YAML do
9
9
 
10
10
  it 'should raise file not found' do
11
11
  lambda do
12
- config_for_yaml(:yaml => 'not/a/real/file.yml')
12
+ config_for_yaml(yaml: 'not/a/real/file.yml')
13
13
  end.should raise_error(Errno::ENOENT)
14
14
  end
15
15
 
@@ -25,4 +25,13 @@ describe AppConfig::Storage::YAML do
25
25
  end
26
26
  end
27
27
 
28
+ it "uses the defaults when 'true' is passed" do
29
+ AppConfig.reset!
30
+
31
+ # Hack to use spec config as the 'default'
32
+ AppConfig::Storage::YAML::DEFAULT_PATH = fixture('app_config.yml')
33
+
34
+ AppConfig.setup!(yaml: true)
35
+ AppConfig.api_key.should_not be_nil
36
+ end
28
37
  end
@@ -25,7 +25,7 @@ describe AppConfig do
25
25
 
26
26
  it 'should reset @@storage' do
27
27
  # configure first
28
- config_for_yaml(:api_key => 'API_KEY')
28
+ config_for_yaml
29
29
  # then reset
30
30
  AppConfig.reset!
31
31
  AppConfig.send(:storage).should be_nil
@@ -46,15 +46,6 @@ describe AppConfig do
46
46
  AppConfig.should be_setup
47
47
  end
48
48
 
49
- it 'should create nested keys' do
50
- pending 'Re-implement this later.'
51
- AppConfig.reset!
52
- AppConfig.setup!
53
-
54
- AppConfig.person.name.first = 'Dale'
55
- AppConfig.person.name.first.should == 'Dale'
56
- end
57
-
58
49
  it 'returns a Hash on setup' do
59
50
  AppConfig.reset!
60
51
  config = AppConfig.setup! do |c|
data/spec/spec_helper.rb CHANGED
@@ -23,29 +23,46 @@ RSpec.configure do |config|
23
23
  # Setup YAML options and pass to config_for().
24
24
  def config_for_yaml(opts = {})
25
25
  path = opts[:yaml] || fixture('app_config.yml')
26
- config_for({ :yaml => path }.merge(opts))
26
+ config_for({ yaml: path }.merge(opts))
27
27
  end
28
28
 
29
29
  def config_for_mongo(opts = {}, load_test_data = true)
30
30
  mongo = AppConfig::Storage::Mongo::DEFAULTS.merge({
31
- :host => 'localhost',
32
- :database => 'app_config_test',
31
+ database: 'app_config_test',
33
32
  })
34
33
  begin
35
34
  load_mongo_test_config(mongo) if load_test_data
36
- config_for({:mongo => mongo}.merge(opts))
35
+ config_for({mongo: mongo}.merge(opts))
37
36
  rescue Mongo::ConnectionFailure
38
37
  pending "***** Mongo specs require a running MongoDB server *****"
39
38
  end
40
39
  end
41
40
 
41
+ def config_for_postgres(opts = {}, load_test_data = true)
42
+ postgres = AppConfig::Storage::Postgres::DEFAULTS.merge({
43
+ dbname: 'app_config_test'
44
+ })
45
+
46
+ begin
47
+ load_postgres_test_config(postgres) if load_test_data
48
+ config_for({postgres: postgres}.merge(opts))
49
+ rescue PG::Error => e
50
+ if e.to_s =~ /could not connect to server/
51
+ pending "***** Postgres specs require a running PostgreSQL server *****"
52
+ else
53
+ # Re-raise the exception, since we only care about connectivity here.
54
+ raise e
55
+ end
56
+ end
57
+ end
58
+
42
59
  private
43
60
 
44
61
  def load_mongo_test_config(options)
45
62
  connection = ::Mongo::Connection.new(options[:host], options[:port].to_i)
46
63
  database = connection.db(options[:database])
47
64
  collection = database.collection(options[:collection])
48
- test_data = YAML.load_file(fixture('app_config_mongo.yml'))
65
+ test_data = YAML.load_file(fixture('app_config.yml'))
49
66
 
50
67
  data = collection.find_one
51
68
  if data
@@ -54,4 +71,37 @@ RSpec.configure do |config|
54
71
  collection.save(test_data)
55
72
  end
56
73
  end
74
+
75
+ def load_postgres_test_config(options)
76
+ original_options = options.dup
77
+
78
+ options.delete(:user) if options[:user].nil?
79
+ options.delete(:password) if options[:password].nil?
80
+
81
+ table = options.delete(:table)
82
+
83
+ begin
84
+ connection = ::PG.connect(options)
85
+
86
+ config = ::YAML.load_file(fixture('app_config.yml'))
87
+ attrs = config.keys.map { |k| "#{k} character varying(255)" }.join(', ')
88
+
89
+ create_query = "CREATE TABLE #{table} (id bigserial primary key, #{attrs})"
90
+ insert_query = "INSERT INTO #{table} (#{config.keys.join(', ')}) VALUES (#{config.values.map { |v| "'#{v}'" }.join(', ')})"
91
+
92
+ connection.exec(create_query)
93
+ connection.exec(insert_query)
94
+ rescue PG::Error => e
95
+ case e.to_s
96
+ when /database "#{options[:dbname]}" does not exist/
97
+ %x[createdb -U `whoami` -O `whoami` #{options[:dbname]}]
98
+ load_postgres_test_config(original_options)
99
+ when /relation "#{table}" already exists/
100
+ # no-op
101
+ else
102
+ raise e
103
+ end
104
+ end
105
+ end
106
+
57
107
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: app_config
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dale Campbell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-02 00:00:00.000000000 Z
11
+ date: 2013-07-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bson_ext
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pg
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -70,16 +84,16 @@ dependencies:
70
84
  name: rspec
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - ~>
87
+ - - '>='
74
88
  - !ruby/object:Gem::Version
75
- version: 2.10.0
89
+ version: '0'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - ~>
94
+ - - '>='
81
95
  - !ruby/object:Gem::Version
82
- version: 2.10.0
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: simplecov
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -130,15 +144,15 @@ files:
130
144
  - lib/app_config/storage.rb
131
145
  - lib/app_config/storage/base.rb
132
146
  - lib/app_config/storage/mongo.rb
147
+ - lib/app_config/storage/postgres.rb
133
148
  - lib/app_config/storage/yaml.rb
134
149
  - lib/app_config/version.rb
135
150
  - spec/app_config/storage/mongo_spec.rb
151
+ - spec/app_config/storage/postgres_spec.rb
136
152
  - spec/app_config/storage/yaml_spec.rb
137
153
  - spec/app_config/storage_spec.rb
138
154
  - spec/app_config_spec.rb
139
155
  - spec/fixtures/app_config.yml
140
- - spec/fixtures/app_config_mongo.yml
141
- - spec/fixtures/env_app_config.yml
142
156
  - spec/spec_helper.rb
143
157
  homepage: http://oshuma.github.io/app_config
144
158
  licenses: []
@@ -167,11 +181,10 @@ specification_version: 4
167
181
  summary: Quick and easy application configuration.
168
182
  test_files:
169
183
  - spec/app_config/storage/mongo_spec.rb
184
+ - spec/app_config/storage/postgres_spec.rb
170
185
  - spec/app_config/storage/yaml_spec.rb
171
186
  - spec/app_config/storage_spec.rb
172
187
  - spec/app_config_spec.rb
173
188
  - spec/fixtures/app_config.yml
174
- - spec/fixtures/app_config_mongo.yml
175
- - spec/fixtures/env_app_config.yml
176
189
  - spec/spec_helper.rb
177
190
  has_rdoc: true
@@ -1,5 +0,0 @@
1
- # Test values loaded into the Mongo db.
2
- ---
3
- admin_email: 'admin@example.com'
4
- api_name: 'Supr Webz 2.0'
5
- api_key: 'SUPERAWESOMESERVICE'
@@ -1,17 +0,0 @@
1
- defaults: &defaults
2
- title: 'AppConfig Env Mode'
3
- admin_email: 'admin@example.com'
4
- api_name: 'Supr Webz 2.0'
5
- api_key: 'SUPERAWESOMESERVICE'
6
-
7
- development:
8
- <<: *defaults
9
- admin_email: 'dev@example.com'
10
-
11
- production:
12
- <<: *defaults
13
- title: 'AppConfig Env Production Mode!'
14
-
15
- test:
16
- <<: *defaults
17
- admin_email: 'test@example.com'