envied 0.6.3 → 0.7.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2ad0058d9ef3c1ac2fdb9d6e0fa5abcdfd46a357
4
- data.tar.gz: 27bce5b5dec311495cfce3df7db4a165b7390ca4
3
+ metadata.gz: 46ff25f0ca1accf79ba7095db2e6b0232af3cb8c
4
+ data.tar.gz: f6f3572cb136f9d3e68affbfa4bafa839a203b05
5
5
  SHA512:
6
- metadata.gz: 03de29ccf52772727c3f1e6105eff5e48636fa6e091b863b06d3dec76e5a1805d9fc35142a768b30453271082739c8296206fd976020295b6d0159c6a7d7fc09
7
- data.tar.gz: 86606787ebaf0ffa25c297d9fc56da7abe352b7394d5fd1b2a2bf84d4e4e33389190a4ff236a02957dfcd3a048485b6255bdd3816103ab7c42664b8cc9a8f5ec
6
+ metadata.gz: 70d6e4d6fb890c88bbb18c058c487e4c9bedcc0183562e6ef466f54c96c82701f635a2b7aa0af7da32747938ba14caea1098200cbd94a9d43068d9e3d54c8f14
7
+ data.tar.gz: a25bdf917df7f8479733e751051a08c9289c6c8beb8acc9c9068ff5b095e33c80c03e8e473e43c1f48083cddf6e8b41dfe94a82a38050d793db49e6d8edb1be8
@@ -1,3 +1,7 @@
1
+ # 0.7.0 / 2014-08-24
2
+
3
+ * Add init:rails-task for setup in Rails applications.
4
+
1
5
  # 0.6.3 / 2014-08-22
2
6
 
3
7
  * Fix bug: 'false' was not a coercible value.
data/README.md CHANGED
@@ -2,11 +2,25 @@
2
2
 
3
3
  ### TL;DR ensure presence and type of your app's ENV-variables.
4
4
 
5
- This gem will provide:
6
-
7
- * A fail-fast check for presence of ENV-variables
8
- * A fail-fast check whether the values can be coerced to the correct type
9
- * Access to typed ENV-variables (instead of just strings)
5
+ Features:
6
+
7
+ * check for presence and correctness of ENV-variables
8
+ * access to typed ENV-variables (integers, booleans etc. instead of just strings)
9
+ * check the presence and correctness of Heroku config
10
+
11
+ ## Contents
12
+
13
+ * [Quickstart](#quickstart)
14
+ * [Installation](#installation)
15
+ * [Configuration](#configuration)
16
+ * [Types](#types)
17
+ * [Groups](#groups)
18
+ * [Defaults](#defaults)
19
+ * [Rails](#rails)
20
+ * [Command-line interface](#command-line-interface)
21
+ * [Testing](#testing)
22
+ * [Developing](#developing)
23
+ * [Contributing](#contributing)
10
24
 
11
25
  ## Quickstart
12
26
 
@@ -23,7 +37,7 @@ variable :PORT, :Integer
23
37
  ### 2) Check for presence and coercibility
24
38
 
25
39
  ```ruby
26
- # file: some file that'll be run on initialization (e.g. `config/application.rb`)
40
+ # during initialization
27
41
  ENVied.require
28
42
  ```
29
43
 
@@ -40,6 +54,24 @@ ENVied.PORT # => 3001
40
54
  ENVied.FORCE_SSL # => false
41
55
  ```
42
56
 
57
+ ## Installation
58
+
59
+ Add this line to your application's Gemfile:
60
+
61
+ gem 'envied'
62
+
63
+ ...then bundle:
64
+
65
+ $ bundle
66
+
67
+ ...then for Rails applications:
68
+
69
+ $ bundle exec envied init:rails
70
+
71
+ ...or for non-Rails applications:
72
+
73
+ $ bundle exec envied init
74
+
43
75
  ## Configuration
44
76
 
45
77
  ### Types
@@ -154,7 +186,45 @@ ENVied.require(:default, :test, :ci)
154
186
  ENVied.require(:default, ENV['RACK_ENV'], (ENV['CI'] ? :ci : :not_ci))
155
187
  ```
156
188
 
157
- ## command-line interface
189
+ ## Rails
190
+
191
+ **tl;dr** use the `init:rails`-task to generate the necessary files for a Rails app (see [installation](#installation)).
192
+
193
+ ---
194
+
195
+ With the [Spring](https://github.com/rails/spring) preloader (which is part of the default Rails setup nowadays) it's a bit tricky when to do `ENVied.require`.
196
+
197
+ The first time you execute a command (say `bin/rails console`), Spring will start the server from which subsequent commands fork from.
198
+ Currently [a bug in Spring](https://github.com/rails/spring/pull/267#issue-28580171) causes the initialization of the forked process to use the server's `ENV` instead of the actual `ENV`.
199
+
200
+ So if your `ENV` is not valid the first time you start Spring...:
201
+
202
+ # spring server *not* running
203
+ $ bin/rails console
204
+ # spring server started
205
+ # error raised: Please set the following ENV-variables: FORCE_SSL (RuntimeError)
206
+
207
+ ...it won't be valid for subsequent commands (even when you provide the correct variables):
208
+
209
+ # spring server still running
210
+ # FORCE_SSL=1 bin/rails console
211
+ # error raised: Please set the following ENV-variables: FORCE_SSL (RuntimeError)
212
+
213
+ So while doing a `ENVied.require` in `config/application.rb` would seem perfectly fine, it won't work in the default 'springified' Rails setup.
214
+
215
+ The workaround (which the `init:rails`-task will generate) is to move the `ENVied.require` to Spring's `after_fork`-callback.
216
+ If you want to change Rails' config based on ENV-variables you should put this in an `after_fork`-callback as well:
217
+
218
+ ```ruby
219
+ # config/initializers/envied.rb as generated by 'bundle exec envied init:rails'
220
+ ENVied.springify do
221
+ ENVied.require(:default, ENV['RAILS_ENV'])
222
+
223
+ Rails.configuration.force_ssl = ENVied.FORCE_SSL
224
+ end
225
+ ```
226
+
227
+ ## Command-line interface
158
228
 
159
229
  ```bash
160
230
  $ envied help
@@ -164,22 +234,9 @@ Commands:
164
234
  envied check:heroku:binstub # Generates a shell script for the check:heroku-task
165
235
  envied help [COMMAND] # Describe available commands or one specific command
166
236
  envied init # Generates a default Envfile in the current working directory
237
+ envied init:rails # Generate all files needed for a Rails project
167
238
  ```
168
239
 
169
- ## Installation
170
-
171
- Add this line to your application's Gemfile:
172
-
173
- gem 'envied'
174
-
175
- ...then bundle:
176
-
177
- $ bundle
178
-
179
- ...and generate the `Envfile`:
180
-
181
- $ bundle exec envied init
182
-
183
240
  ## Testing
184
241
 
185
242
  ```bash
@@ -196,7 +253,6 @@ bin/rake
196
253
  bin/pry --gem
197
254
  ```
198
255
 
199
-
200
256
  ## Contributing
201
257
 
202
258
  1. Fork it ( http://github.com/eval/envied/fork )
@@ -99,6 +99,18 @@ class ENVied
99
99
  @instance = group_configuration.new(env)
100
100
  end
101
101
 
102
+ def self.springified_require(*args)
103
+ springify { ENVied.require(*args) }
104
+ end
105
+
106
+ def self.springify(&block)
107
+ if defined?(Spring) && Spring.respond_to?(:watcher)
108
+ Spring.after_fork(&block)
109
+ else
110
+ block.call
111
+ end
112
+ end
113
+
102
114
  def self.ensure_configured!
103
115
  # Backward compat: load Envfile only when it's present
104
116
  configure_via_envfile if envfile_exist?
@@ -11,6 +11,12 @@ class ENVied
11
11
  template("Envfile.tt")
12
12
  end
13
13
 
14
+ desc "init:rails", "Generate all files needed for a Rails project"
15
+ define_method "init:rails" do
16
+ init
17
+ template("rails-initializer.tt", 'config/initializers/envied.rb')
18
+ end
19
+
14
20
  desc "check", "Checks whether you environment contains the defined variables"
15
21
  long_desc <<-LONG
16
22
  Checks whether defined variables are present and valid in your shell.
@@ -2,3 +2,7 @@
2
2
  # enable_defaults! { ENV['RACK_ENV'] != 'production' }
3
3
 
4
4
  # variable :REDIS_URL, :String, default: 'redis://localhost:6379'
5
+ #
6
+ # group :production do
7
+ # variable :MAIL_PASS_USERNAME, :String
8
+ # end
@@ -0,0 +1,5 @@
1
+ ENVied.springify do
2
+ ENVied.require(:default, ENV['RAILS_ENV'])
3
+ # Put any initialization based on ENV-variables below, e.g.:
4
+ # Rails.configuration.force_ssl = ENVied.FORCE_SSL
5
+ end
@@ -1,3 +1,3 @@
1
1
  class ENVied
2
- VERSION = '0.6.3'
2
+ VERSION = '0.7.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: envied
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gert Goet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-22 00:00:00.000000000 Z
11
+ date: 2014-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: virtus
@@ -116,6 +116,7 @@ files:
116
116
  - lib/envied/cli.rb
117
117
  - lib/envied/templates/Envfile.tt
118
118
  - lib/envied/templates/heroku-env-check.tt
119
+ - lib/envied/templates/rails-initializer.tt
119
120
  - lib/envied/version.rb
120
121
  - spec/envied_spec.rb
121
122
  - spec/spec_helper.rb