app_config 0.4.0 → 0.4.1

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/README CHANGED
@@ -9,6 +9,13 @@ An easy to use, customizable library to easily store and retrieve application
9
9
  Usage is simple. Just pass either a hash of options, or a block, to
10
10
  AppConfig.setup. See AppConfig::Base for a list of valid storage methods.
11
11
 
12
+ As of version 0.4.1, if the <tt>:storage_method</tt> is not set, AppConfig
13
+ will act pretty much just like a normal Hash:
14
+
15
+ AppConfig.setup(:email => 'admin@example.com')
16
+ AppConfig[:email] # => 'admin@example.com'
17
+
18
+
12
19
  == AppConfig::Storage::YAML
13
20
 
14
21
  Given this YAML file:
@@ -35,15 +42,16 @@ Use it like so:
35
42
  AppConfig[:api_name] # => 'Supr Webz 2.0'
36
43
  AppConfig[:api_key] # => 'SUPERAWESOMESERVICE'
37
44
 
45
+
38
46
  == AppConfig::Storage::Sqlite
39
47
 
40
48
  AppConfig.setup do |config|
41
49
  config[:storage_method] = :sqlite
50
+ config[:table] = 'app_config' # defaults to 'app_config'
51
+
42
52
  config[:database] = '/path/to/database.sqlite3'
43
53
  # ..or..
44
54
  config[:uri] = 'sqlite://path/to/database.sqlite3'
45
-
46
- config[:table] = 'app_config' # defaults to 'app_config'
47
55
  end
48
56
 
49
57
  AppConfig[:column] # => 'value'
data/lib/app_config.rb CHANGED
@@ -1,20 +1,10 @@
1
1
  $LOAD_PATH.unshift File.dirname(__FILE__)
2
2
 
3
- # TODO: Only load deps if needed (no gems unless required).
4
- dependencies = %w{ sqlite3 yaml uri }
5
-
6
- begin
7
- dependencies.each { |lib| require lib }
8
- rescue LoadError
9
- require 'rubygems'
10
- dependencies.each { |lib| require lib }
11
- end
12
-
13
3
  # AppConfig stuff.
14
4
  require 'core_ext/hashish'
15
5
 
16
6
  module AppConfig
17
- VERSION = '0.4.0'
7
+ VERSION = '0.4.1'
18
8
 
19
9
  autoload :Base, 'app_config/base'
20
10
  autoload :Error, 'app_config/error'
@@ -1,18 +1,21 @@
1
1
  module AppConfig
2
2
 
3
+ require 'uri'
4
+
3
5
  # The Base storage class.
4
6
  # Acts as a wrapper for the different storage methods.
5
7
  #
6
8
  # See each storage method's documentation for their specific options.
7
9
  #
8
10
  # Valid storage methods:
11
+ # * :memory (AppConfig::Storage::Memory)
9
12
  # * :sqlite (AppConfig::Storage::Sqlite)
10
13
  # * :yaml (AppConfig::Storage::YAML)
11
14
  class Base
12
15
 
13
- # TODO: Change the default storage method to not use YAML.
16
+ # TODO: All these DEFAULTS constants are kinda annoying.
14
17
  DEFAULTS = {
15
- :storage_method => :yaml,
18
+ :storage_method => :memory,
16
19
  }
17
20
 
18
21
  # Accepts either a hash of +options+ or a block (which overrides
@@ -64,6 +67,8 @@ module AppConfig
64
67
  # TODO: Maybe purge AppConfig options (ie, those not related to the user-end).
65
68
  def initialize_storage
66
69
  case @options[:storage_method]
70
+ when :memory
71
+ AppConfig::Storage::Memory.load(@options)
67
72
  when :sqlite
68
73
  AppConfig::Storage::Sqlite.load(@options)
69
74
  when :yaml
@@ -0,0 +1,11 @@
1
+ module AppConfig
2
+ module Error
3
+
4
+ class NotConfigured < Exception
5
+ def to_s; "Must call 'AppConfig.setup' to setup storage!"; end
6
+ end
7
+
8
+ class UnknownStorageMethod < Exception; end
9
+
10
+ end # Error
11
+ end # AppConfig
@@ -1,6 +1,8 @@
1
1
  module AppConfig
2
2
  module Storage
3
- autoload :Sqlite, 'app_config/storage/sqlite'
4
- autoload :YAML, 'app_config/storage/yaml'
3
+ autoload :BaseStorage, 'app_config/storage/base_storage'
4
+ autoload :Memory, 'app_config/storage/memory'
5
+ autoload :Sqlite, 'app_config/storage/sqlite'
6
+ autoload :YAML, 'app_config/storage/yaml'
5
7
  end
6
8
  end
@@ -0,0 +1,13 @@
1
+ module AppConfig
2
+ module Storage
3
+ class BaseStorage
4
+
5
+ attr_reader :data
6
+
7
+ def self.load(options)
8
+ new(options).data
9
+ end
10
+
11
+ end # BaseStorage
12
+ end # Storage
13
+ end # AppConfig
@@ -0,0 +1,11 @@
1
+ module AppConfig
2
+ module Storage
3
+ class Memory < BaseStorage
4
+
5
+ def initialize(options)
6
+ @data = Hashish.new(options)
7
+ end
8
+
9
+ end # Memory
10
+ end # Storage
11
+ end # AppConfig
@@ -1,9 +1,15 @@
1
1
  module AppConfig
2
2
  module Storage
3
3
 
4
+ begin
5
+ require 'sqlite3'
6
+ rescue LoadError
7
+ require 'rubygems'
8
+ require 'sqlite3'
9
+ end
10
+
4
11
  # SQLite3 storage method.
5
- class Sqlite
6
- attr_accessor :data
12
+ class Sqlite < BaseStorage
7
13
 
8
14
  DEFAULTS = {
9
15
  :database => File.expand_path(File.join(ENV['HOME'], '.app_config.sqlite3')),
@@ -20,11 +26,6 @@ module AppConfig
20
26
  @data = load_from_database
21
27
  end
22
28
 
23
- # Creates a new Sqlite storage with the given +path+ and returns the data.
24
- def self.load(path)
25
- new(path).data
26
- end
27
-
28
29
  private
29
30
 
30
31
  # Returns a Hashish that looks something like {:column => value}.
@@ -1,9 +1,10 @@
1
1
  module AppConfig
2
2
  module Storage
3
3
 
4
+ require 'yaml'
5
+
4
6
  # YAML storage method.
5
- class YAML
6
- attr_reader :data
7
+ class YAML < BaseStorage
7
8
 
8
9
  DEFAULTS = {
9
10
  :path => File.expand_path(File.join(ENV['HOME'], '.app_config.yml'))
@@ -19,11 +20,6 @@ module AppConfig
19
20
  @data = Hashish.new(::YAML.load_file(path))
20
21
  end
21
22
 
22
- # Creates a new YAML storage with the given +path+ and returns the data.
23
- def self.load(path)
24
- new(path).data
25
- end
26
-
27
23
  end # YAML
28
24
  end # Storage
29
25
  end # AppConfig
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: app_config
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dale Campbell
@@ -9,19 +9,10 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-02 00:00:00 -05:00
12
+ date: 2009-10-25 00:00:00 -05:00
13
13
  default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: sqlite3-ruby
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
24
- version:
14
+ dependencies: []
15
+
25
16
  description: An easy to use, customizable library to easily store and retrieve application configuration.
26
17
  email:
27
18
  - oshuma@gmail.com
@@ -36,7 +27,10 @@ files:
36
27
  - README
37
28
  - lib/app_config.rb
38
29
  - lib/app_config/base.rb
30
+ - lib/app_config/error.rb
39
31
  - lib/app_config/storage.rb
32
+ - lib/app_config/storage/base_storage.rb
33
+ - lib/app_config/storage/memory.rb
40
34
  - lib/app_config/storage/sqlite.rb
41
35
  - lib/app_config/storage/yaml.rb
42
36
  - lib/core_ext/hashish.rb