ecolo 0.1.0

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.
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: []