capistrano3-postgres 0.2.0 → 0.2.1

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: 4a3a110edbbe9a631690e324e2fe5402e444de96
4
- data.tar.gz: f5b91f729e650b86a166a5c4b8703227f98625ad
3
+ metadata.gz: c1823e5322b73aef1707629d1de248d157cd8620
4
+ data.tar.gz: a724ae00fb4140bb00d173d7464ba9a3842d7fd8
5
5
  SHA512:
6
- metadata.gz: da5572d5f31aa6a3db436d9684760c22129ef75cfa80cf3a81a77feead971cc620eff0e7524ddcb49438f44d8503a1aadae6ada3eea6c41f33dc96067ffa536c
7
- data.tar.gz: b34dfa9ef2b055d4d24349487ecb08eff84f73041e500125ccf394654adef4d6cb9a66799142acf50481bbb77475a14d5185cfd4a45de58c9dc2a094d4e7642a
6
+ metadata.gz: a96d1e6c8d2259c76a81f21042fa1bf4b08b91ca3423c41a76992f74f47f88f963b282ea822e41371db5d74c70daf2aeecd62cd3e50426c3ad79dd494897b1ce
7
+ data.tar.gz: e55fca4756984d06bb0519bec5c54fdabac9e39854175e6afee747d6765667a73d2ece519603cf8bc7d731be50b6f0f857f2d6bd90520562423af0b27bee115c
data/README.md CHANGED
@@ -19,6 +19,9 @@ Or install it yourself as:
19
19
  $ gem install capistrano3-postgres
20
20
 
21
21
  ## Usage
22
+
23
+ Capistrano3::Postgres supports [Dotenv](https://github.com/bkeepers/dotenv) gem and automatically loads environment variables from `.env` files if they are used in the project.
24
+
22
25
  ```ruby
23
26
  # Capfile
24
27
 
@@ -1,5 +1,5 @@
1
1
  module Capistrano3
2
2
  module Postgres
3
- VERSION = "0.2.0"
3
+ VERSION = "0.2.1"
4
4
  end
5
5
  end
@@ -12,9 +12,7 @@ namespace :load do
12
12
  end
13
13
 
14
14
  namespace :postgres do
15
-
16
15
  namespace :backup do
17
-
18
16
  desc 'Create database dump'
19
17
  task :create do
20
18
  on roles(fetch(:postgres_role)) do |role|
@@ -128,7 +126,8 @@ namespace :postgres do
128
126
  on roles(fetch(:postgres_role)) do |role|
129
127
  run_locally do
130
128
  env = 'development'
131
- yaml_content = ERB.new(capture "cat config/database.yml").result
129
+ preload_env_variables(env)
130
+ yaml_content = ERB.new(capture 'cat config/database.yml').result
132
131
  set :postgres_local_database_config, database_config_defaults.merge(YAML::load(yaml_content)[env])
133
132
  end
134
133
  end
@@ -141,7 +140,13 @@ namespace :postgres do
141
140
  within release_path do
142
141
  env = fetch(:postgres_env).to_s.downcase
143
142
  filename = "#{deploy_to}/current/config/database.yml"
144
- capture_config_cmd = "ruby -e \"require 'erb'; puts ERB.new(File.read('#{filename}')).result\""
143
+ eval_yaml_with_erb = <<-RUBY.strip
144
+ #{env_variables_loader_code}
145
+ require 'erb'
146
+ puts ERB.new(File.read('#{filename}')).result
147
+ RUBY
148
+
149
+ capture_config_cmd = "ruby -e \"#{eval_yaml_with_erb}\""
145
150
  yaml_content = test('ruby -v') ? capture(capture_config_cmd) : capture(:bundle, :exec, capture_config_cmd)
146
151
  set :postgres_remote_database_config, database_config_defaults.merge(YAML::load(yaml_content)[env])
147
152
  end
@@ -152,4 +157,46 @@ namespace :postgres do
152
157
  { 'host' => 'localhost' }
153
158
  end
154
159
 
160
+ # Load environment variables for configurations.
161
+ # Useful for such gems as Dotenv, Figaro, etc.
162
+ def preload_env_variables(env)
163
+ safely_require_gems('dotenv')
164
+
165
+ if defined?(Dotenv)
166
+ load_env_variables_with_dotenv(env)
167
+ end
168
+ end
169
+
170
+ def load_env_variables_with_dotenv(env)
171
+ Dotenv.load(
172
+ File.expand_path('.env.local'),
173
+ File.expand_path(".env.#{env}"),
174
+ File.expand_path('.env')
175
+ )
176
+ end
177
+
178
+ def safely_require_gems(*gem_names)
179
+ gem_names.each do |name|
180
+ begin
181
+ require name
182
+ rescue LoadError
183
+ # Ignore if gem doesn't exist
184
+ end
185
+ end
186
+ end
187
+
188
+ # Requires necessary gems (Dotenv, Figaro, ...) if present
189
+ # and loads environment variables for configurations
190
+ def env_variables_loader_code
191
+ <<-RUBY.strip
192
+ begin
193
+ require 'dotenv'
194
+ Dotenv.load(
195
+ File.expand_path('.env.production'),
196
+ File.expand_path('.env')
197
+ )
198
+ rescue LoadError
199
+ end
200
+ RUBY
201
+ end
155
202
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano3-postgres
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Krasynskyi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-09 00:00:00.000000000 Z
11
+ date: 2016-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano