configster 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md ADDED
@@ -0,0 +1,12 @@
1
+ ## 0.0.2 (September 12, 2012)
2
+
3
+ Features:
4
+
5
+ - Added the ability to load multiple configurations.
6
+ - Added an examples directory with a basic HTTParty and ActiveRecord example.
7
+
8
+ Documentation:
9
+
10
+ - Fixed a "bug" in the README.
11
+ - Added a note about accessing Configster directly.
12
+ - Added additional notes that reference the examples directory.
data/README.md CHANGED
@@ -23,9 +23,9 @@ Or install it yourself as:
23
23
  For most applications, you'll want to load Configster before you start loading the rest of your application. For example:
24
24
 
25
25
  require 'configster'
26
- Configster.load_configster!(File.join('path', 'to', 'my_config.yml'))
26
+ Configster.load!(File.join('path', 'to', 'my_config.yml'))
27
27
 
28
- You can also pass a raw hash of stuff into `load_configster!` as long as it's in the format of `"ClassName" => { 'variable' => 'whatever' }`
28
+ You can also pass a raw hash of stuff into `load!` as long as it's in the format of `"ClassName" => { 'variable' => 'whatever' }`
29
29
 
30
30
  Then, just include Configster in any classes you want:
31
31
 
@@ -48,7 +48,7 @@ First, make yourself a nice little configuration file and save it to `~/my_sweet
48
48
  Then, you'll write your application like this:
49
49
 
50
50
  require 'configster'
51
- Configster.load_configster!('~/my_sweet_app_credentials.yml')
51
+ Configster.load!('File.expand_path(~/my_sweet_app_credentials.yml'))
52
52
 
53
53
  class MySweetApp
54
54
 
@@ -69,8 +69,18 @@ Then, you'll write your application like this:
69
69
 
70
70
  end
71
71
 
72
+ You can also access the configuration more directly without the mixin by doing the following:
73
+
74
+ # Return the config as an instance of OpenStruct
75
+ Configster.config_for('MySweetApp')
76
+
77
+ # Return the config as a raw hash
78
+ Configster.raw_config_for('MySweetApp')
79
+
72
80
  Now you can share your application without hard coding and/or sharing your credentials.
73
81
 
82
+ For more examples accessing Configster directly or using it without YAML, check the examples directory in the gem.
83
+
74
84
  ## Contributing
75
85
 
76
86
  1. Fork it
data/configster.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |gem|
10
10
  gem.email = ["patricktulskie@gmail.com"]
11
11
  gem.description = %q{Configster is a tidy little configuration management utility for your application. Store your configuration as YAML outside of your application. You probably haven't heard of it.}
12
12
  gem.summary = %q{Configster keeps your configuration out of your application.}
13
- gem.homepage = ""
13
+ gem.homepage = "https://github.com/PatrickTulskie/configster"
14
14
 
15
15
  gem.files = `git ls-files`.split($/)
16
16
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -0,0 +1,21 @@
1
+ require 'active_record'
2
+ require 'configster'
3
+
4
+ Configster.load!(
5
+ 'my_production_database' => {
6
+ :adapter => 'mysql2',
7
+ :database => 'configster_production_database',
8
+ :cast => false
9
+ :encoding => 'utf8'
10
+ :username => 'configster',
11
+ :password => 'configitywiggy',
12
+ :socket => '/tmp/mysql.sock'
13
+ }
14
+ )
15
+
16
+ # You don't have to load from the mixin - you can just access Configster directly for free form configurations.
17
+ my_database_config = Configster.raw_config_for('my_production_database')
18
+ my_database_config.symbolize_keys!
19
+
20
+ # And throw it into ActiveRecord
21
+ ActiveRecord::Base.establish_connection(my_database_config)
@@ -0,0 +1,22 @@
1
+ require 'configster'
2
+
3
+ # Do this in an initializer somewhere...
4
+ Configster.load!(
5
+ 'MySweetApp' => {
6
+ 'username' => 'SweetUsername',
7
+ 'password' => 'SweetPassword123'
8
+ }
9
+ )
10
+
11
+ class MySweetApp
12
+
13
+ include Configster
14
+ include HTTParty
15
+ # Configure your class here and then you're all set
16
+ basic_auth configster.username, configster.password
17
+
18
+ def timeline(which = :friends, options = { })
19
+ self.class.get("/statuses/#{which}_timeline.json", options)
20
+ end
21
+
22
+ end
@@ -5,11 +5,11 @@ module Configster
5
5
  # =========================================
6
6
  module ClassMethods
7
7
  def configster
8
- @configster ||= Configster.configuration_for(self)
8
+ @configster ||= Configster.config_for(self)
9
9
  end
10
10
 
11
11
  def raw_configster
12
- Configster.raw_configuration_for(self)
12
+ Configster.raw_config_for(self)
13
13
  end
14
14
  end
15
15
 
@@ -31,21 +31,24 @@ module Configster
31
31
  # ===========================
32
32
  # = Core Configster Methods =
33
33
  # ===========================
34
- def self.load_configster!(configster_config)
35
- @configster_config = case configster_config
34
+ def self.load!(configster_config)
35
+ @configster_config ||= { }
36
+ new_config = case configster_config
36
37
  when Hash
37
38
  configster_config
38
39
  when String
39
40
  YAML.load_file(configster_config)
40
41
  end
42
+
43
+ @configster_config.merge!(new_config)
41
44
  end
42
45
 
43
- def self.configuration_for(klass)
46
+ def self.config_for(klass)
44
47
  klass_config = @configster_config[klass.to_s]
45
48
  klass_config ? OpenStruct.new(klass_config).freeze : nil
46
49
  end
47
50
 
48
- def self.raw_configuration_for(klass)
51
+ def self.raw_config_for(klass)
49
52
  @configster_config[klass.to_s]
50
53
  end
51
54
 
@@ -1,3 +1,3 @@
1
1
  module Configster
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -3,10 +3,16 @@ require "spec_helper"
3
3
  describe Configster do
4
4
 
5
5
  subject { Configster }
6
- it { should respond_to(:configuration_for) }
6
+ it { should respond_to(:config_for) }
7
7
 
8
8
  it "should be able to load the configuration for a specific class" do
9
- Configster.configuration_for(KonfiguredKlass).should_not be_nil
9
+ Configster.config_for(KonfiguredKlass).should_not be_nil
10
+ end
11
+
12
+ it "should not destroy other configurations when loading additional configs" do
13
+ Configster.load!('test_thing' => { 'test' => true })
14
+ Configster.config_for('test_thing').test.should be_true
15
+ Configster.config_for(KonfiguredKlass).user_name.should == 'configster'
10
16
  end
11
17
 
12
18
  end
data/spec/spec_helper.rb CHANGED
@@ -26,7 +26,7 @@ RSpec.configure do |config|
26
26
  end
27
27
  end
28
28
 
29
- Configster.load_configster!(File.join($spec_root, 'configurations', 'test_configuration.yml'))
29
+ Configster.load!(File.join($spec_root, 'configurations', 'test_configuration.yml'))
30
30
 
31
31
  class KonfiguredKlass
32
32
  include Configster
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: configster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-11 00:00:00.000000000 Z
12
+ date: 2012-09-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70264095054640 !ruby/object:Gem::Requirement
16
+ requirement: &70104961260240 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70264095054640
24
+ version_requirements: *70104961260240
25
25
  description: Configster is a tidy little configuration management utility for your
26
26
  application. Store your configuration as YAML outside of your application. You
27
27
  probably haven't heard of it.
@@ -32,11 +32,14 @@ extensions: []
32
32
  extra_rdoc_files: []
33
33
  files:
34
34
  - .gitignore
35
+ - CHANGELOG.md
35
36
  - Gemfile
36
37
  - LICENSE.txt
37
38
  - README.md
38
39
  - Rakefile
39
40
  - configster.gemspec
41
+ - examples/active_record_example.rb
42
+ - examples/httparty_example.rb
40
43
  - lib/configster.rb
41
44
  - lib/configster/configster.rb
42
45
  - lib/configster/version.rb
@@ -44,7 +47,7 @@ files:
44
47
  - spec/configurations/test_configuration.yml
45
48
  - spec/konfigured_klass_spec.rb
46
49
  - spec/spec_helper.rb
47
- homepage: ''
50
+ homepage: https://github.com/PatrickTulskie/configster
48
51
  licenses: []
49
52
  post_install_message:
50
53
  rdoc_options: []