configureasy 0.0.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 27a4dc67f6dbb0c1a719a09453e3621c91365ea1
4
- data.tar.gz: 7110800425b8880687c7a78e5c23b285b58d3705
3
+ metadata.gz: 53ec1f1f03b188c3ef934d0bf5e5d980a313825c
4
+ data.tar.gz: 082aa5e705f4488e4a65033df3e4d63a92731249
5
5
  SHA512:
6
- metadata.gz: eb1870f7f84b47e4b08483dc958dc3de2cc4859b66d4066e38786c9f553cf28bc220a278797a8cc43aea450d244fb79365b5d398df0d5a0cd087abac4e35b23a
7
- data.tar.gz: 2f88c2dfe20f5ed7b34ec131691c81a228e9b39104583b289620d1c81c98ffe4b548a65b62a25ad83d84806aac2429692e6d9c6e16d85db2137a3152c46592c3
6
+ metadata.gz: 8225a7f3d3c5c06eed1a38570699e119e74e905df538f8c6ce0dd9b3d0c840a5f53f00cada86987bb8e5476e9e6e0ce4934a26a5a951ccd2af1572878e21f6d0
7
+ data.tar.gz: b4cb540efa45c89b5955a06a37fc85b0e2c685b519843fb3b65ea36bfc1b6c15d8cb1da57e04700b914dfe635e01897e7c43185b46614a0a19656ca831c31c99
data/.coveralls.yml ADDED
@@ -0,0 +1 @@
1
+ repo_token: ysw4PXa6VEK0TrzqD7rO26tiSCcBF2Vkv
data/.travis.yml ADDED
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.0
4
+ - 2.1.2
5
+ - 2.0.0
6
+ - 1.9.3
data/Gemfile CHANGED
@@ -2,3 +2,17 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in configureasy.gemspec
4
4
  gemspec
5
+
6
+ group :development do
7
+ gem 'terminal-notifier'
8
+ gem 'terminal-notifier-guard'
9
+ gem 'pry'
10
+ gem 'pry-nav'
11
+ end
12
+
13
+ group :test do
14
+ gem 'rake'
15
+ gem 'rspec'
16
+ gem 'guard-rspec'
17
+ gem 'coveralls', require: false
18
+ end
data/README.md CHANGED
@@ -1,68 +1,114 @@
1
1
  Configureasy
2
2
  =============
3
3
 
4
- A forma mais simples de carregar arquivos de configuração em suas Classe/Módulos.
4
+ [![Build Status](https://travis-ci.org/alexandreprates/configureasy.svg?branch=master)](https://travis-ci.org/alexandreprates/configureasy) [![Coverage Status](https://coveralls.io/repos/alexandreprates/configureasy/badge.svg)](https://coveralls.io/r/alexandreprates/configureasy) [![Inline docs](http://inch-ci.org/github/alexandreprates/configureasy.svg?branch=master)](http://inch-ci.org/github/alexandreprates/configureasy)
5
5
 
6
- ## Instalação
6
+ Configureasy is a library for load configs quickly and easily.
7
7
 
8
- Basta adicionar esta linha no seu Gemfile
8
+ ## Installation
9
+
10
+ Add this line to your application's Gemfile:
9
11
 
10
12
  ```ruby
11
13
  gem 'configureasy'
12
14
  ```
13
15
 
14
- E entao executar:
16
+ And then execute:
15
17
 
16
18
  $ bundle
17
19
 
18
- Ou instale manualmente:
20
+ Or install it yourself as:
19
21
 
20
22
  $ gem install configureasy
21
23
 
22
- ## Como usar
24
+ ## Usage
23
25
 
24
- Basta incluir na classe e começar a usar
26
+ Load content of <i>config/database.yml</i>
25
27
 
26
28
  ```ruby
27
- class Foo
29
+ # in ./config/database.yml
30
+ # host: localhost
31
+ # port: 1234
32
+
33
+ class DBConfig
28
34
  include Configureasy
35
+ load_config :database
29
36
  end
30
37
 
31
- Foo.config.some_key_in_config
32
- # => 'some value for that key'
38
+ # You can access config values
39
+ DBConfig.database.host # => 'localhost'
40
+ DBConfig.database.port # => 1234
33
41
  ```
34
42
 
35
- Por padrão ele busca um arquivo (.yml) no diretório _config_, caso precise especificar um nome diferente utilize o método _config_name_.
43
+ Setting different method name
36
44
 
37
45
  ```ruby
38
- class Foo
46
+ # in ./config/user_keys.yml
47
+ # name: secret_key
48
+ # value: secret_key_value
49
+
50
+ class User
39
51
  include Configureasy
40
- # load APP_ROOT/config/foo_config.yml
41
- config_name :foo_config
52
+ load_config :user_keys, as: :keys
42
53
  end
54
+
55
+ User.keys.name # => 'secret_key'
56
+ User.keys.value # => 'secret_key_value'
43
57
  ```
44
58
 
45
- Caso precise você tambem pode especificar de onde carregar a configuração usando o método _config_filename_.
59
+ Setting different folder
46
60
 
47
61
  ```ruby
48
- class Foo
62
+ class Censor
49
63
  include Configureasy
50
- # load APP_ROOT/.hide_dir/secrets.yml
51
- config_filename '.hide_dir/secrets.yml'
64
+ load_config :forbidden_words, path: './blacklist'
65
+ # load './blacklist/forbidden_words.yml'
52
66
  end
53
67
  ```
54
68
 
55
- Caso precise ver o conteúdo original do arquivo utilize o método _raw_content_.
69
+ Configureasy detect per environment configs
56
70
 
57
71
  ```ruby
58
- class Foo
72
+ # in ./config/aws.yml
73
+ # development:
74
+ # access: development_access
75
+ # secret: development_secret
76
+ # production:
77
+ # access: production_access
78
+ # secret: production_secret
79
+
80
+ class S3Storage
59
81
  include Configureasy
82
+ load_config :aws
83
+ end
84
+
85
+ # in development
86
+ S3Storage.aws.access # => 'development_access'
87
+
88
+ # in production
89
+ S3Storage.aws.access # => 'production_access'
90
+ ```
91
+
92
+ You can access config data as Hash
93
+
94
+ ```ruby
95
+ # in ./config/access.yml
96
+ # admin_group: 1
97
+ # user_group: 2
98
+
99
+ class User
100
+ require Configureasy
101
+ load_config :access
60
102
  end
61
103
 
62
- Foo.config.raw_content
63
- # => {'foo' => 'bar'}
104
+ User.access.as_hash
105
+ # => {'admin_group' => '1', 'user_group' => '2'}
64
106
  ```
65
107
 
66
- ## Duvidas, questões e desconfianças em geral
108
+ ## Contributing
67
109
 
68
- mail me: ajfprates@gmail.com
110
+ 1. Fork it ( https://github.com/alexandreprates/configureasy/fork )
111
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
112
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
113
+ 4. Push to the branch (`git push origin my-new-feature`)
114
+ 5. Create a new Pull Request
data/Rakefile CHANGED
@@ -1,2 +1,5 @@
1
+ require 'rspec/core/rake_task'
1
2
  require "bundler/gem_tasks"
2
3
 
4
+ RSpec::Core::RakeTask.new(:spec)
5
+ task default: :spec
data/configureasy.gemspec CHANGED
@@ -8,20 +8,12 @@ Gem::Specification.new do |spec|
8
8
  spec.version = Configureasy::VERSION
9
9
  spec.authors = ["Alexandre Prates"]
10
10
  spec.email = ["ajfprates@gmail.com"]
11
- spec.summary = %q{A Simple way to get configs in your Classes/Modules.}
12
- spec.description = %q{A Simple way to get configs in your Classes/Modules.}
13
- spec.homepage = "https://gitlab.ir7.com.br/videos/configureasy"
11
+ spec.summary = %q{A Simple way to get configs.}
12
+ spec.description = %q{A Simple way to get configs.}
13
+ spec.homepage = "https://github.com/alexandreprates/configureasy"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
17
  spec.test_files = spec.files.grep(%r{^(spec|features)/})
19
18
  spec.require_paths = ["lib"]
20
-
21
- spec.add_development_dependency "bundler", "~> 1.7"
22
- spec.add_development_dependency "rake", "~> 10.0"
23
-
24
- spec.add_development_dependency "rspec", "~> 3.1"
25
- spec.add_development_dependency "guard", "~> 2.10"
26
- spec.add_development_dependency "guard-rspec", "~> 4.5"
27
19
  end
data/lib/configureasy.rb CHANGED
@@ -29,10 +29,11 @@ module Configureasy
29
29
  # Class to raise error on invalid config file
30
30
  class ConfigInvalid < Exception; end
31
31
 
32
- def self.included(receiver)
32
+ def self.included(receiver) # :nodoc:
33
33
  receiver.extend Configurable
34
34
  end
35
35
  end
36
36
 
37
37
  require 'configureasy/config'
38
+ require 'configureasy/config_parser'
38
39
  require 'configureasy/configurable'
@@ -1,15 +1,53 @@
1
1
  require 'ostruct'
2
2
 
3
- ##
4
- # Class for store and retrive config values
3
+ # Store data structure (Hash) and allow access values using method calling.
5
4
  #
6
- # Example
7
- # >> Confugureasy::Config.new(foo: 'foo').foo
8
- # => 'foo'
5
+ # Confugureasy::Config.new(foo: 'foo').foo
6
+ # # => 'foo'
9
7
  #
8
+ # Configureasy::Config.new(:foo => {:bar => :value}).foo.bar
9
+ # # => :value
10
+ #
11
+ # You can access values using [] too
12
+ #
13
+ # Configureasy::Config.new(foo: 'bar')[:foo]
14
+ # # => 'bar'
15
+ #
16
+ # Beside you retrive data as hash
17
+ #
18
+ # Configureasy::Config(foo: 'bar').as_hash
19
+ # # => {:foo => 'bar'}
10
20
  class Configureasy::Config < OpenStruct
11
- # return config as hash
12
- def raw_content
13
- @table
21
+
22
+ # Convert a hash data into methods recursively.
23
+ # Params:
24
+ # [+params+]:: Hash with data do convert
25
+ #
26
+ # Returns new instance of [Configureasy::Config].
27
+ def initialize(params = {})
28
+ @hash = params
29
+ params = params.inject({}) do |hash, data|
30
+ key, value = data
31
+ value = self.class.new(value) if value.is_a? Hash
32
+ hash.merge key.to_sym => value
33
+ end
34
+ super params
35
+ end
36
+
37
+ # Retrive some config value.
38
+ # Params:
39
+ # [+key+]:: name of config
40
+ #
41
+ # Configureasy::Config.new(foo: 'bar')[:foo]
42
+ # # => 'bar'
43
+ #
44
+ # Returns config value, or nil if can't reach config value.
45
+ def [](key)
46
+ self.send key
47
+ end
48
+
49
+ # Returns config as hash.
50
+ def as_hash
51
+ @hash
14
52
  end
15
53
  end
@@ -0,0 +1,58 @@
1
+ require 'yaml'
2
+
3
+ # Load and parse content of config (YAML).
4
+ # Raise exception if config file not found
5
+ #
6
+ # parser = Configureasy::ConfigParser.new('./config/config.yml')
7
+ # # => <# Configureasy::ConfigParser ... >
8
+ # parser.parse
9
+ # # => {:hash => :content}
10
+ #
11
+ # Set environment to load specific part of config
12
+ #
13
+ # parser = Configureasy::ConfigParser.new('./config/environments.yml', 'development')
14
+ # # => <# Configureasy::ConfigParser ... >
15
+ # parser.parse
16
+ # # => {:development => :content}
17
+ class Configureasy::ConfigParser
18
+ # Get config filename
19
+ attr_reader :filename
20
+ # Get environment to load data
21
+ attr_reader :environment
22
+
23
+ # Initialize ConfigParser instance.
24
+ # Params:
25
+ # [+filename+]:: name of config file.
26
+ # [+environment+]:: load specific environment config (*optional*).
27
+ #
28
+ # <b>If config file not found raise an exeception.</b>
29
+ #
30
+ # Returns instance of [Configureasy::ConfigParser]
31
+ def initialize(filename, environment = nil)
32
+ raise "Config #{filename} not found" unless File.exist? filename
33
+ @filename = filename
34
+ @environment = environment || current_environment
35
+ end
36
+
37
+ # Returns config content
38
+ def parse
39
+ content = YAML.load_file(filename)
40
+ content.has_key?(self.environment) ? content[self.environment] : content
41
+ rescue
42
+ raise "Invalid config content for #{filename}"
43
+ end
44
+
45
+ # Returns config content as [Configureasy::Config]
46
+ def as_config
47
+ Configureasy::Config.new self.parse
48
+ end
49
+
50
+ private
51
+
52
+ # Gets the current environment.
53
+ # Returns current environment as string. If environment is not set returns 'development'
54
+ def current_environment
55
+ ENV['RUBY_ENV'] || ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development'
56
+ end
57
+
58
+ end
@@ -1,57 +1,72 @@
1
1
  require 'yaml'
2
2
 
3
+ # Allows loading of different configuration files.
4
+ #
5
+ # class Dumb
6
+ # include Configureasy
7
+ #
8
+ # # create class method _config_ with content of config/config.yml
9
+ # load_config :config
10
+ #
11
+ # # create class method _secrets_ with content for config/session_secrets.yml
12
+ # load_config :session_secrets, as: :secrets
13
+ #
14
+ # # create class method _aws_keys_ with content for './aws/keys.yml'
15
+ # load_config :keys, as: :aws_keys, path: './aws'
16
+ # end
3
17
  module Configureasy::Configurable
4
- # Setting config file name
5
- #
6
- # Example
7
- # config_name :foo
8
- # => APP_ROOT/config/foo.yml
9
- #
10
- # config_name :bar
11
- # => APP_ROOT/config/bar.yml
12
- #
13
- def config_name(name = nil)
14
- @config_name = name if name
15
- @config_name || self.name.downcase
16
- end
17
-
18
- def config_filename(filename = nil)
19
- @config_filename = File.expand_path filename if filename
20
- @config_filename || File.expand_path("./config/#{config_name}.yml")
21
- end
18
+ @@configurables = {}
22
19
 
23
- # Load the config yaml and return Configureasy::Config instance
24
- def config
25
- @config ||= load_configs
20
+ # dinamically create method for access config data.
21
+ # Params:
22
+ # [+file_basename+]:: config file name (by default in *config* directory)
23
+ # [+as+]:: generated method name (by default same as file_basename)
24
+ # [+path+]:: config path (by default './config')
25
+ def load_config(file_basename, options = {})
26
+ name = options[:as] || file_basename
27
+ path = options[:path] || './config'
28
+ filename = File.join path, "#{file_basename}.yml"
29
+ self.class.send(:define_method, name) { _configurable_for(filename) }
30
+ self.class.send(:define_method, "#{name}_reload!") { _configurable_reload(filename) }
26
31
  end
27
32
 
28
- # Looks for config file an return true if file exists
29
- def have_config?
30
- File.exist? config_filename
33
+ # @deprecated Please use {#load_config} instead.
34
+ # Setting config source filename.
35
+ # Params:
36
+ # [+name+]:: the name of config file
37
+ #
38
+ # # load contents for ./config/foo.yml
39
+ # config_name :foo
40
+ #
41
+ # # load contents for ./config/bar.yml
42
+ # config_name :bar
43
+ def config_name(name = nil)
44
+ warn "[DEPRECATION] `config_name` is deprecated. Please use `load_config` instead."
45
+ load_config name, as: 'config'
31
46
  end
32
47
 
33
- # Reload configs
34
- def reset_config!
35
- @config = nil
36
- config
48
+ # @deprecated Please use {#load_config} instead.
49
+ # Load config in specific location.
50
+ # Params
51
+ # [+filename+]:: config filename
52
+ #
53
+ # # load contents for /etc/my_configs.yml
54
+ # config_filename '/etc/my_configs.yml'
55
+ def config_filename(filename = nil)
56
+ warn "[DEPRECATION] `config_filename` is deprecated. Please use `load_config` instead."
57
+ basename = File.basename(filename, '.yml')
58
+ path = File.dirname(filename)
59
+ load_config basename, as: 'config', path: path
37
60
  end
38
61
 
39
62
  private
40
63
 
41
- def load_configs
42
- configs_hash = parse_configs
43
- raise Configureasy::ConfigInvalid, "invalid config file '#{config_filename}'", caller unless configs_hash.is_a? Hash
44
-
45
- Configureasy::Config.new configs_hash[_current_env] || configs_hash
46
- end
47
-
48
- def parse_configs
49
- raise Configureasy::ConfigNotFound, "file not found '#{config_filename}'", caller unless have_config?
50
- YAML.load_file config_filename
64
+ def _configurable_for(filename) # :nodoc:
65
+ @@configurables[filename.to_sym] || _configurable_reload(filename)
51
66
  end
52
67
 
53
- def _current_env
54
- ENV['RAILS_ENV'] || ENV['RUBY_ENV'] || ENV['RACK_ENV'] || 'development'
68
+ def _configurable_reload(filename) # :nodoc:
69
+ @@configurables[filename.to_sym] = Configureasy::ConfigParser.new(filename).as_config
55
70
  end
56
71
 
57
72
  end
@@ -1,3 +1,3 @@
1
1
  module Configureasy
2
- VERSION = "0.0.2"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+
3
+ describe Configureasy::ConfigParser do
4
+ describe '.new' do
5
+ before(:each) do
6
+ allow(File).to receive(:exist?) { true }
7
+ allow(ENV).to receive(:[]) { nil }
8
+ end
9
+
10
+ it "check if filename exists" do
11
+ expect(File).to receive(:exist?).with('missing_config.yml') { false }
12
+ expect { described_class.new('missing_config.yml') }.to raise_error "Config missing_config.yml not found"
13
+ expect(File).to receive(:exist?).with('missing_config.yml') { true }
14
+ expect(described_class.new 'missing_config.yml').to be_instance_of described_class
15
+ end
16
+
17
+ it "set environment to load data" do
18
+ allow(File).to receive(:exist?) { true }
19
+ expect(described_class.new('config.yml', 'stage').environment).to eq 'stage'
20
+ end
21
+
22
+ it "get RUBY_ENV" do
23
+ allow(ENV).to receive(:[]).with('RUBY_ENV') { 'ruby_env' }
24
+ expect(described_class.new('config.yml').environment).to eq 'ruby_env'
25
+ end
26
+
27
+ it "get RAILS_ENV" do
28
+ allow(ENV).to receive(:[]).with('RAILS_ENV') { 'rails_env' }
29
+ expect(described_class.new('config.yml').environment).to eq 'rails_env'
30
+ end
31
+
32
+ it "get RACK_ENV" do
33
+ allow(ENV).to receive(:[]).with('RACK_ENV') { 'rack_env' }
34
+ expect(described_class.new('config.yml').environment).to eq 'rack_env'
35
+ end
36
+ end
37
+
38
+ describe '#parse' do
39
+ it "return content of yml" do
40
+ allow(File).to receive(:exist?) { true }
41
+ allow(YAML).to receive(:load_file) { {'yaml' => 'content'} }
42
+ expect(described_class.new('config.yml').parse).to eq({'yaml' => 'content'})
43
+ end
44
+ it 'return config for environment' do
45
+ allow(File).to receive(:exist?) { true }
46
+ allow(YAML).to receive(:load_file) { {'development' => 'wrong', 'test' => 'wrong', 'stage' => 'correct'} }
47
+ allow(ENV).to receive(:[]).with('RUBY_ENV') { 'stage' }
48
+ expect(described_class.new('config.yml').parse).to eq('correct')
49
+ end
50
+ end
51
+
52
+ describe '#as_config' do
53
+ it 'return config as Configureasy::Config' do
54
+ allow(File).to receive(:exist?) { true }
55
+ allow(YAML).to receive(:load_file) { {'yaml' => 'content'} }
56
+ expect(described_class.new('config.yml').as_config).to be_instance_of Configureasy::Config
57
+ end
58
+ end
59
+
60
+ end
@@ -1,13 +1,24 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Configureasy::Config do
4
- describe ".new" do
5
- it "should store key/value as methods" do
6
- expect(Configureasy::Config.new(foo: 'bar').foo).to eq('bar')
4
+ let(:values) { {'first_level' => {'second_level' => 'second_level_value'}, 'single_level' => 'single_level_value'} }
5
+ let(:config) { described_class.new(values) }
6
+ describe '.new' do
7
+ it 'convert multi level hash' do
8
+ expect(config.first_level.second_level).to eq 'second_level_value'
7
9
  end
8
10
  end
9
11
 
10
- describe "#as_hash" do
12
+ describe '#[]' do
13
+ it 'return value for a key' do
14
+ expect(config[:single_level]).to eq 'single_level_value'
15
+ end
16
+ end
11
17
 
18
+ describe '#.as_hash' do
19
+ it "return raw content" do
20
+ expect(config.as_hash).to eq values
21
+ end
12
22
  end
23
+
13
24
  end
@@ -1,81 +1,72 @@
1
1
  require 'spec_helper'
2
2
 
3
- class Foo
4
- extend Configureasy::Configurable
5
- end
6
-
7
3
  describe Configureasy::Configurable do
8
- describe ".config_name" do
9
- it "by default config name is class name" do
10
- expect(Foo.config_name).to eq('foo')
4
+ before(:each) do
5
+ allow(File).to receive(:exist?) { true }
6
+ allow(YAML).to receive(:load_file) { {'works' => 'true'} }
7
+ end
8
+
9
+ describe '.load_config' do
10
+ let(:dumb_class) do
11
+ Class.new do
12
+ extend Configureasy::Configurable
13
+ load_config :dumb_config
14
+ load_config :another_config
15
+ end
11
16
  end
12
17
 
13
- it "changes config name" do
14
- expect(Foo.config_name).to eq('foo')
15
- Foo.config_name "bar"
16
- expect(Foo.config_name).to eq('bar')
18
+ it 'dynamically generate methods' do
19
+ expect(dumb_class).to respond_to :dumb_config
17
20
  end
18
21
 
19
- it "config name reflects on config_filename" do
20
- Foo.config_name "other_conf"
21
- expect(Foo.send :config_filename).to match(/other_conf\.yml$/)
22
+ it 'support more than one config' do
23
+ expect(dumb_class).to respond_to :another_config
22
24
  end
23
- end
24
25
 
25
- describe '.config_filename' do
26
- it "set config filename" do
27
- Foo.config_filename '.hidedir/secret_config.yml'
28
- expect(Foo.config_filename).to end_with('.hidedir/secret_config.yml')
26
+ it 'return ConfigParser content' do
27
+ expect(dumb_class.dumb_config.works).to eq 'true'
29
28
  end
30
29
  end
31
30
 
32
- describe '#config' do
33
- let(:yaml_content) { {'development' => {'foo' => 'bar'}, 'test' => {'foo' => 'test'} } }
34
-
35
- it "raise excepion when file missing" do
36
- expect { Foo.config }.to raise_exception Configureasy::ConfigNotFound
31
+ describe '.config_reload!' do
32
+ let(:dumb_class) do
33
+ Class.new do
34
+ extend Configureasy::Configurable
35
+ load_config :config
36
+ end
37
37
  end
38
38
 
39
- it "raise exception when file content is not valid yaml" do
40
- allow(YAML).to receive(:load_file).and_return("wrong yaml content")
41
- allow(File).to receive(:exist?).and_return(true)
42
-
43
- expect { Foo.config }.to raise_exception Configureasy::ConfigInvalid
39
+ it 'reloading config file content' do
40
+ expect(dumb_class.config).not_to be dumb_class.config_reload!
44
41
  end
42
+ end
45
43
 
46
- it "access values on config file" do
47
- allow(YAML).to receive(:load_file).and_return(yaml_content)
48
- allow(File).to receive(:exist?).and_return(true)
49
-
50
- expect(Foo.config).to respond_to(:foo)
51
- expect(Foo.config.foo).to eq('bar')
44
+ describe '.config_name' do
45
+ let(:dumb_class) do
46
+ Class.new do
47
+ extend Configureasy::Configurable
48
+ config_name :deprecated
49
+ end
52
50
  end
53
51
 
54
- it "load contend for current environment" do
55
- allow(YAML).to receive(:load_file).and_return(yaml_content)
56
- allow(File).to receive(:exist?).and_return(true)
57
-
58
- ENV['RUBY_ENV'] = 'development'
59
- expect(Foo.reset_config!.foo).to eq('bar')
60
-
61
- ENV['RUBY_ENV'] = 'test'
62
- expect(Foo.reset_config!.foo).to eq('test')
63
-
64
- ENV['RUBY_ENV'] = nil
65
-
66
- ENV['RACK_ENV'] = 'development'
67
- expect(Foo.reset_config!.foo).to eq('bar')
68
- ENV['RACK_ENV'] = nil
69
-
70
- ENV['RAILS_ENV'] = 'test'
71
- expect(Foo.reset_config!.foo).to eq('test')
52
+ it "load config content into config method" do
53
+ expect(dumb_class).to respond_to :config
54
+ expect(dumb_class.config.works).to eq('true')
72
55
  end
56
+ end
73
57
 
74
- it "config is kind of Configs class" do
75
- allow(YAML).to receive(:load_file).and_return(yaml_content)
76
- allow(File).to receive(:exist?).and_return(true)
58
+ describe '.config_filename' do
59
+ let(:dumb_class) do
60
+ Class.new do
61
+ extend Configureasy::Configurable
62
+ config_filename './deprecated/feature.yml'
63
+ end
64
+ end
77
65
 
78
- expect(Foo.config).to be_kind_of(Configureasy::Config)
66
+ it "load config with filename into config method" do
67
+ expect(dumb_class).to respond_to :config
68
+ expect(dumb_class.config.works).to eq('true')
79
69
  end
80
70
  end
71
+
81
72
  end
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,7 @@
1
1
  require './lib/configureasy'
2
+ require 'coveralls'
3
+ Coveralls.wear!
4
+
2
5
  RSpec.configure do |config|
3
6
  config.expect_with :rspec do |expectations|
4
7
  expectations.include_chain_clauses_in_custom_matcher_descriptions = true
metadata CHANGED
@@ -1,93 +1,25 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: configureasy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexandre Prates
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-06 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.7'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.7'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '10.0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '10.0'
41
- - !ruby/object:Gem::Dependency
42
- name: rspec
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '3.1'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '3.1'
55
- - !ruby/object:Gem::Dependency
56
- name: guard
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '2.10'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '2.10'
69
- - !ruby/object:Gem::Dependency
70
- name: guard-rspec
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '4.5'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '4.5'
83
- description: A Simple way to get configs in your Classes/Modules.
11
+ date: 2015-03-08 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A Simple way to get configs.
84
14
  email:
85
15
  - ajfprates@gmail.com
86
16
  executables: []
87
17
  extensions: []
88
18
  extra_rdoc_files: []
89
19
  files:
20
+ - ".coveralls.yml"
90
21
  - ".gitignore"
22
+ - ".travis.yml"
91
23
  - Gemfile
92
24
  - Guardfile
93
25
  - LICENSE.txt
@@ -96,13 +28,15 @@ files:
96
28
  - configureasy.gemspec
97
29
  - lib/configureasy.rb
98
30
  - lib/configureasy/config.rb
31
+ - lib/configureasy/config_parser.rb
99
32
  - lib/configureasy/configurable.rb
100
33
  - lib/configureasy/version.rb
34
+ - spec/lib/configureasy/config_parser_spec.rb
101
35
  - spec/lib/configureasy/config_spec.rb
102
36
  - spec/lib/configureasy/configurable_spec.rb
103
37
  - spec/lib/configureasy_spec.rb
104
38
  - spec/spec_helper.rb
105
- homepage: https://gitlab.ir7.com.br/videos/configureasy
39
+ homepage: https://github.com/alexandreprates/configureasy
106
40
  licenses:
107
41
  - MIT
108
42
  metadata: {}
@@ -125,8 +59,9 @@ rubyforge_project:
125
59
  rubygems_version: 2.4.5
126
60
  signing_key:
127
61
  specification_version: 4
128
- summary: A Simple way to get configs in your Classes/Modules.
62
+ summary: A Simple way to get configs.
129
63
  test_files:
64
+ - spec/lib/configureasy/config_parser_spec.rb
130
65
  - spec/lib/configureasy/config_spec.rb
131
66
  - spec/lib/configureasy/configurable_spec.rb
132
67
  - spec/lib/configureasy_spec.rb