envy.benforeva 1.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.
- checksums.yaml +7 -0
- data/lib/envy.rb +51 -0
- data/lib/envy/deploy.rb +30 -0
- data/lib/envy/version.rb +3 -0
- metadata +74 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 44b9463e1dbafceb661a7ba70ba1a4797bf3ee83
|
4
|
+
data.tar.gz: 584efe2c775caa78909b374b465e7fca67211059
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 724aee76dd5dc787f498099c5a37a4cc338c27dc6f9fefc486ecb0b728da9552786c3c745eae91518da7b61e1892a68de8588e170d3a5be079d6f5b504045484
|
7
|
+
data.tar.gz: a03aed39a5bbd6e615ab8d82e54b4f760e3b601a857d395c1ffbc27dbf1702e196ee345689f0483aa24342ce41c0b40a61ba2f0cc78fe0929c62e263559d249a
|
data/lib/envy.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'dotenv'
|
2
|
+
require_relative 'envy/deploy.rb'
|
3
|
+
|
4
|
+
# Module for loading environment variables and failing programs when variables
|
5
|
+
# are not set.
|
6
|
+
module Envy
|
7
|
+
include Dotenv, Deploy
|
8
|
+
|
9
|
+
EnvMissing = Class.new(StandardError)
|
10
|
+
|
11
|
+
# Creates environment variables for `.env' and overwrites them with variables
|
12
|
+
# present in `.env.test`
|
13
|
+
def self.test_envs
|
14
|
+
Dotenv.overload('.env.test')
|
15
|
+
end
|
16
|
+
|
17
|
+
# Returns the value of the specified environment variable or raises an
|
18
|
+
# EnvMissing exception
|
19
|
+
# @param env_name [String] name of the environment variable, which should match an
|
20
|
+
# entry in .env* files
|
21
|
+
# @raise [EnvMissing] when the environment variable does not exist
|
22
|
+
# @return [String, nil] value of envrionment variable when env_name is a valid
|
23
|
+
# name and nil otherwise
|
24
|
+
def self.load_env(env_name)
|
25
|
+
if env_name?(env_name)
|
26
|
+
ENV.fetch(env_name){|name| raise EnvMissing, load_env_error_message(name)}
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# Entity check for EnvName parameter
|
31
|
+
# @param data [Object] object under test
|
32
|
+
# @return [Boolean] true if data is a valid EnvName, false otherwise
|
33
|
+
def self.env_name?(data)
|
34
|
+
data.is_a?(String) &&
|
35
|
+
(data == data.upcase)
|
36
|
+
end
|
37
|
+
|
38
|
+
# Exception message for EnvMissing in #load_env
|
39
|
+
# @param env_name [String] name of the environment variable, which should match an
|
40
|
+
# entry in .env* files
|
41
|
+
# @return [String] error message
|
42
|
+
def self.load_env_error_message(env_name)
|
43
|
+
"#{env_name} is missing from the environment. "\
|
44
|
+
"Please ensure that the entry #{env_name}=value-of-var is present in " \
|
45
|
+
"your .env or .env.* file."
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.deploy_heroku(app_name)
|
49
|
+
Deploy.deploy_heroku(app_name)
|
50
|
+
end
|
51
|
+
end
|
data/lib/envy/deploy.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'platform-api'
|
2
|
+
require 'dotenv'
|
3
|
+
Dotenv.load
|
4
|
+
|
5
|
+
module Deploy
|
6
|
+
extend self
|
7
|
+
|
8
|
+
MissingHerokuToken = Class.new(StandardError)
|
9
|
+
TokenName = 'HEROKU_TOKEN'
|
10
|
+
|
11
|
+
def self.heroku_token
|
12
|
+
ENV.fetch(TokenName) do |name|
|
13
|
+
raise MissingHerokuToken,
|
14
|
+
"The environment variable #{name} has not been set." \
|
15
|
+
" The method #deploy_heroku cannot be run without it."
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def heroku_client
|
20
|
+
PlatformAPI.connect_oauth(heroku_token)
|
21
|
+
end
|
22
|
+
|
23
|
+
def deploy_heroku(app_name)
|
24
|
+
heroku_client.config_var.update(app_name, config_vars)
|
25
|
+
end
|
26
|
+
|
27
|
+
def config_vars
|
28
|
+
Dotenv.load.delete_if{|k| k.eql? TokenName}
|
29
|
+
end
|
30
|
+
end
|
data/lib/envy/version.rb
ADDED
metadata
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: envy.benforeva
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Andre Dickosn
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-07-24 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: dotenv
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: platform-api
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: Envy fails programs dependent on missingenvironment variables
|
42
|
+
email: andrebcdickson@gmail.com
|
43
|
+
executables: []
|
44
|
+
extensions: []
|
45
|
+
extra_rdoc_files: []
|
46
|
+
files:
|
47
|
+
- lib/envy.rb
|
48
|
+
- lib/envy/deploy.rb
|
49
|
+
- lib/envy/version.rb
|
50
|
+
homepage: https://bitbucket.org/benforeva/envy/src/master/
|
51
|
+
licenses:
|
52
|
+
- MIT
|
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.6.14.1
|
71
|
+
signing_key:
|
72
|
+
specification_version: 4
|
73
|
+
summary: strict environment management
|
74
|
+
test_files: []
|