early 0.1.1 → 0.2.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 +4 -4
  2. data/README.md +8 -2
  3. data/lib/early.rb +16 -11
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c183b9cde5a6a3b207970a6265346520ec1a8ee3f91aaf7674768e72c45a951d
4
- data.tar.gz: 8bd47c61c8ca1c0651add8f20de3ad8688028a7bba7dd0b7599c79e30571da53
3
+ metadata.gz: 3ca89071c14e1dc8c32c5493760ee17f2e5710fb743fb4ae289b7fa702662969
4
+ data.tar.gz: 88c1841a00119011ce55df8306c49748403a7b66506379e7224151d2690d13dc
5
5
  SHA512:
6
- metadata.gz: b5578de20e1188aee8821a4912bc8d5a116b8f6a10329187a5a4bbfd6e3207ba10b056fc799f5a2aee7c04ba65a9ca6cb674f673c99a10a6863a7470c29deeec
7
- data.tar.gz: 14e7fb2446f43780514b73517c8d610bf97a18cf5f51a33a1508300935a9492f05b847c423acbc6e9831de073a045f77bc03d7e933f6b3bdd5335ac42ace253f
6
+ metadata.gz: 8918c2fe09c2521c81675d4ca6df4184df44e2ecdb0d8ea3d5fb26271ed28408d047d1b85c89e97f2d8765b4434fc4611e75da2a9980b19865472a262ab49c1f
7
+ data.tar.gz: b0148bb5b212c0152934c07b31addcc51584dcdbc390031decfddfdeefd1d9119cbdc4586074430e9a198eb0d999d69097d0467c86b65564d54d9d5462a30e3d
data/README.md CHANGED
@@ -9,13 +9,15 @@ it early in your program to require or default a variable and then work with
9
9
  Add this line to your application's Gemfile:
10
10
 
11
11
  ```ruby
12
- gem 'early'
12
+ gem 'early', require: false
13
13
  ```
14
14
 
15
- Afterwards make sure to call `Early` as early as possible in your application,
15
+ Afterwards, make sure to call `Early` as early as possible in your application,
16
16
  to check the `ENV` variables, before you use them in your configuration layer:
17
17
 
18
18
  ```ruby
19
+ require 'early'
20
+
19
21
  Early do
20
22
  require :DATABASE_URL
21
23
  require :REDIS_URL
@@ -35,6 +37,8 @@ If you want to use early with Rails, you can store the early configuration in
35
37
 
36
38
 
37
39
  ```ruby
40
+ require 'early'
41
+
38
42
  Early do
39
43
  require :ADMIN_NAME, :ADMIN_PASSWORD
40
44
  require :MEETUP_API_KEY
@@ -60,3 +64,5 @@ applied before any code in `config` has been run.
60
64
 
61
65
  The gem is available as open source under the terms of the [MIT
62
66
  License](https://opensource.org/licenses/MIT).
67
+
68
+ [12f]: https://12factor.net
data/lib/early.rb CHANGED
@@ -7,7 +7,7 @@
7
7
  # piece of code is hit, which may happen late in the program runtime an be easy
8
8
  # to miss.
9
9
  module Early
10
- VERSION = '0.1.1'
10
+ VERSION = '0.2.0'
11
11
 
12
12
  class Configuration # :nodoc:
13
13
  attr_reader :variables
@@ -68,8 +68,8 @@ module Early
68
68
  end
69
69
 
70
70
  # Env returns the early environment. This is either the value of RAILS_ENV,
71
- # RACK_ENV (in order) or the string <tt>'development'</tt> if neither of the
72
- # aforementioned environment variables are present.
71
+ # RACK_ENV (in that order) or the string <tt>'development'</tt> if neither of
72
+ # the aforementioned environment variables are present.
73
73
  def self.env
74
74
  ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development'
75
75
  end
@@ -79,22 +79,28 @@ module Early
79
79
  def self.apply(config)
80
80
  config.variables.each(&:apply)
81
81
  end
82
+
83
+ # Accessing environment variables as constants. Raises Early::Error if
84
+ # missing.
85
+ def self.const_missing(name)
86
+ RequiredVariable.new(name).apply
87
+ end
82
88
  end
83
89
 
84
90
  module Kernel
91
+ module_function
92
+
85
93
  # Early checks for environment variables availability. It provides a DSL that
86
94
  # can require or set a default value for an environment variable. This will
87
95
  # help you catch configuration errors earlier in your application runtime.
88
96
  # Here is an example:
89
97
  #
90
- # Early do
91
- # require :REDIS_URL
92
- # default :PROVIDER, :generic
93
- # end
98
+ # Early do require :REDIS_URL default :PROVIDER, :generic end
94
99
  #
95
- # Calling <tt>require :REDIS_URL</tt> will fail if <tt>ENV['REDIS_URL']</tt> is
96
- # <tt>nil</tt>, which means that it wasn't provided, before running the current
97
- # application. The error will give you information about the missing variable:
100
+ # Calling <tt>require :REDIS_URL</tt> will fail if <tt>ENV['REDIS_URL']</tt>
101
+ # is <tt>nil</tt>, which means that it wasn't provided, before running the
102
+ # current application. The error will give you information about the missing
103
+ # variable:
98
104
  #
99
105
  # Early::Error (Variable ENV["REDIS_URL"] is missing)
100
106
  #
@@ -116,7 +122,6 @@ module Kernel
116
122
  # worry about it.
117
123
  def Early(*envs, &block)
118
124
  config = Early::Configuration.new(&block)
119
-
120
125
  if envs.empty? || envs.find { |e| Early.env == e.to_s }
121
126
  Early.apply(config)
122
127
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: early
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genadi Samokovarov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-01-04 00:00:00.000000000 Z
11
+ date: 2018-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler