ecolo 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/lib/ecolo.rb +56 -0
  3. data/lib/ecolo/version.rb +3 -0
  4. metadata +74 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8f4e9b075ebed049fe42ecc170125ffc31a51864
4
+ data.tar.gz: e522d3580e4cc2b1c853e1f195892cd0bc59008a
5
+ SHA512:
6
+ metadata.gz: 4ee46aa4fb44845aaff0e9a4e4871e60f7ae4569ba1a6140b64e778fe07929f92653160f95b71268c9d25b5ab837253af341106e245741858849d1bf5e058551
7
+ data.tar.gz: 775d75c4647acff64a823ea4452ffcf27d9d0e7903012b494a29960df6bf62595f14bc6b33dcee271c4d8d0eb1ed6afff789bb58a0a38263f54a6027f35c6631
data/lib/ecolo.rb ADDED
@@ -0,0 +1,56 @@
1
+ require 'forwardable'
2
+
3
+ module Ecolo
4
+
5
+ def self.included(base)
6
+ base.class == Module ? base.include(EnvWith) : base.extend(EnvWith)
7
+ base.env_with
8
+ end
9
+
10
+ module EnvWith
11
+
12
+ ACCESSOR = [:env, :env=].freeze
13
+ DELEGATE = -> { ACCESSOR.each { |a| def_instance_delegator :@ecolo, a }; self }
14
+
15
+ def self.extended(base)
16
+ singleton_base = base.singleton_class.extend Forwardable
17
+ singleton_base.class_exec &DELEGATE
18
+ end
19
+
20
+ def self.included(base)
21
+ base.include(Forwardable).send :module_function, :def_instance_delegator
22
+ base.class_exec(&DELEGATE).send :module_function, *ACCESSOR, :env_with
23
+ end
24
+
25
+ def env_with(options=self)
26
+ @ecolo = Delegator.with options
27
+ end
28
+
29
+ end
30
+
31
+ class Delegator
32
+
33
+ def self.with(options)
34
+ options.is_a?(Hash) ? options[:delegate] : new(options)
35
+ end
36
+
37
+ def initialize(name)
38
+ @env_variable = name.is_a?(String) ? name : underscore(name).upcase << '_ENV'
39
+ end
40
+
41
+ def env
42
+ @env ||= ENV[@env_variable] || 'development'
43
+ end
44
+
45
+ def env=(env)
46
+ @env = env.to_s
47
+ end
48
+
49
+ def underscore(base)
50
+ (base.respond_to?(:name) ? base.name : base.to_s).split('::').last
51
+ .gsub(/.?[A-Z]/) { |c| (c.size == 1 ? c : [c[0], '_', c[-1]].join).downcase }
52
+ end
53
+
54
+ end
55
+
56
+ end
@@ -0,0 +1,3 @@
1
+ module Ecolo
2
+ VERSION = "0.1.0"
3
+ end
metadata ADDED
@@ -0,0 +1,74 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ecolo
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - lacravate
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-09-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.5'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: pry
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.10.4
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.10.4
41
+ description: A few lines of code to give your top level module (or class) the env
42
+ getter and setter
43
+ email:
44
+ - lacravate@lacravate.fr
45
+ executables: []
46
+ extensions: []
47
+ extra_rdoc_files: []
48
+ files:
49
+ - lib/ecolo.rb
50
+ - lib/ecolo/version.rb
51
+ homepage: https://github.com/lacravate/ecolo
52
+ licenses: []
53
+ metadata: {}
54
+ post_install_message:
55
+ rdoc_options: []
56
+ require_paths:
57
+ - lib
58
+ required_ruby_version: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ required_rubygems_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ requirements: []
69
+ rubyforge_project:
70
+ rubygems_version: 2.4.5
71
+ signing_key:
72
+ specification_version: 4
73
+ summary: Expert in simple environmental concerns
74
+ test_files: []