a9n 0.0.2 → 0.0.3

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/.travis.yml ADDED
@@ -0,0 +1,9 @@
1
+ language: ruby
2
+ rvm:
3
+ - "1.8.7"
4
+ - "1.9.2"
5
+ - "1.9.3"
6
+ - jruby-18mode # JRuby in 1.8 mode
7
+ - jruby-19mode # JRuby in 1.9 mode
8
+ - rbx-18mode
9
+ - rbx-19mode
data/Gemfile CHANGED
@@ -1,4 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
+ gem 'rake'
4
5
  gem 'rspec'
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # A9n
2
2
 
3
- TODO: Write a gem description
3
+ [![Build status](https://secure.travis-ci.org/knapo/a9n.png)](https://travis-ci.org/knapo/a9n)
4
+
5
+ Simple tool for managing ruby/rails application configurations.
4
6
 
5
7
  ## Installation
6
8
 
@@ -12,9 +14,9 @@ And then execute:
12
14
 
13
15
  $ bundle
14
16
 
15
- Or install it yourself as:
17
+ In your `application.rb` load configuration with:
16
18
 
17
- $ gem install a9n
19
+ A9n.load
18
20
 
19
21
  ## Usage
20
22
 
data/Rakefile CHANGED
@@ -1,2 +1,11 @@
1
1
  #!/usr/bin/env rake
2
- require "bundler/gem_tasks"
2
+ require 'bundler/gem_tasks'
3
+ require 'rspec/core/rake_task'
4
+
5
+ desc 'Run all specs'
6
+ RSpec::Core::RakeTask.new(:spec) do |t|
7
+ t.pattern = './spec/**/*_spec.rb'
8
+ t.rspec_opts = ['--profile', '--color']
9
+ end
10
+
11
+ task :default => :spec
data/lib/a9n.rb CHANGED
@@ -4,6 +4,7 @@ require 'a9n/store'
4
4
  module A9n
5
5
  class ConfigurationNotLoaded < StandardError; end
6
6
  class MissingConfigurationFile < StandardError; end
7
+ class MissingConfigurationData < StandardError; end
7
8
  class MissingConfigurationVariables < StandardError; end
8
9
  class NoSuchConfigurationVariable < StandardError; end
9
10
 
@@ -12,19 +13,19 @@ module A9n
12
13
  def cfg
13
14
  @@configuration
14
15
  rescue NameError
15
- raise ConfigurationNotLoaded.new("Configuration does not seem to be loaded. Plase call A9n.load.")
16
+ raise ConfigurationNotLoaded.new("Configuration does not seem to be loaded. Plase call `A9n.load`.")
16
17
  end
17
18
 
18
19
  def env
19
- @@env ||= ENV['RAILS_ENV'] || ENV['RACK_ENV'] || ENV['APP_ENV']
20
+ @env ||= ENV['RAILS_ENV'] || ENV['RACK_ENV'] || ENV['APP_ENV']
20
21
  end
21
-
22
+
22
23
  def local_app
23
- @@local_app ||= Rails
24
+ @local_app ||= Rails
24
25
  end
25
26
 
26
27
  def local_app=(local_app)
27
- @@local_app = local_app
28
+ @local_app = local_app
28
29
  end
29
30
 
30
31
  def load
@@ -45,7 +46,13 @@ module A9n
45
46
  def load_yml(file)
46
47
  path = File.join(local_app.root, file)
47
48
  return unless File.exists?(path)
48
- YAML.load_file(path)[self.env]
49
+ yml = YAML.load_file(path)
50
+
51
+ if yml.key?(self.env)
52
+ return yml[self.env]
53
+ else
54
+ raise MissingConfigurationData.new("Configuration data for #{self.env} was not found in #{file}")
55
+ end
49
56
  end
50
57
 
51
58
  private
data/lib/a9n/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module A9n
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/spec/a9n_spec.rb CHANGED
@@ -6,16 +6,18 @@ describe A9n do
6
6
  it 'raises error' do
7
7
  expect {
8
8
  described_class.local_app
9
- }.to raise_error(NameError, 'uninitialized constant Module::Rails')
9
+ }.to raise_error(NameError)
10
10
  end
11
11
  end
12
12
 
13
13
  context 'when custom non-rails app is being used' do
14
14
  let(:local_app) { stub(:env => 'test', :root => 'local_app') }
15
- before { described_class.local_app = local_app}
15
+ before { described_class.local_app = local_app }
16
16
 
17
17
  specify { described_class.local_app.should == local_app }
18
18
  end
19
+
20
+ after { described_class.local_app = nil }
19
21
  end
20
22
 
21
23
  describe '.load' do
@@ -115,12 +117,25 @@ describe A9n do
115
117
  end
116
118
 
117
119
  context 'when file exists' do
118
- before { described_class.should_receive(:env).and_return('test') }
119
120
  let(:file_path) { 'fixtures/configuration.yml'}
121
+ before { described_class.should_receive(:env).twice.and_return(env) }
122
+
123
+ context 'and has data' do
124
+ let(:env) { 'test' }
125
+
126
+ it 'returns non-empty hash' do
127
+ subject.should be_kind_of(Hash)
128
+ subject.keys.should_not be_empty
129
+ end
130
+ end
131
+ context 'and has no data' do
132
+ let(:env) { 'production' }
120
133
 
121
- it 'returns non-empty hash' do
122
- subject.should be_kind_of(Hash)
123
- subject.keys.should_not be_empty
134
+ it 'raises expection' do
135
+ expect {
136
+ subject
137
+ }.to raise_error(described_class::MissingConfigurationData)
138
+ end
124
139
  end
125
140
  end
126
141
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: a9n
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-05 00:00:00.000000000 Z
12
+ date: 2012-12-06 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Simple tool for managing app configuration
15
15
  email:
@@ -19,6 +19,7 @@ extensions: []
19
19
  extra_rdoc_files: []
20
20
  files:
21
21
  - .gitignore
22
+ - .travis.yml
22
23
  - Gemfile
23
24
  - LICENSE
24
25
  - README.md