env_vars 1.1.0 → 2.0.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
  SHA256:
3
- metadata.gz: e32d97f4e650d16b8c82ec8dd85bc19112788797262c00425e83a1d8594678f3
4
- data.tar.gz: ebec12747a93d37dbeadf026ec1140dbcb1122eca498db9db7f5612221868cc4
3
+ metadata.gz: 878ff93d9458a5d4ca05b2b243128e76c84b42fbaf55fdd61e0c365213ffa9c2
4
+ data.tar.gz: 9934cb28319ac6f34922ef4873a3595956311c4aa8c409e0ae5e6c577e93817d
5
5
  SHA512:
6
- metadata.gz: c6822500b56e48d42f508d128e505b288133724996a926dab44ecb6e43b8373ee6ea177faa6b30a21e48a3e2e2f9eb980d950140f1beca0447d6475aa1ce48ea
7
- data.tar.gz: b4240b420772985e2c3403a7a5abd047b0b8bc8dfc0500340ef3a1e187dea6e181df0bbb4cea52652603c3bc04046b2cde98e85dda48d888067c8305070f1370
6
+ metadata.gz: 123acdbada87a7cb5bec2f8a613bff62e4cf73dd5a833c3303d50fabb778ae49f287167195d2a785c6600c46e40471810f69ed67898a0bd65202d4584a25d835
7
+ data.tar.gz: 4d08d1a3d7d10a090c5214f5c00f943ea39a62789c54468f6bbc4f9d73e4f023c8901b743d87a8a96ddd43b587f3e63b6fb18f4e16e5529f55353c3434e94b47
@@ -0,0 +1,3 @@
1
+ ---
2
+ github: [fnando]
3
+ custom: ["https://www.paypal.me/nandovieira/🍕"]
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ *.enc
data/.rubocop.yml CHANGED
@@ -4,6 +4,9 @@ inherit_gem:
4
4
 
5
5
  AllCops:
6
6
  TargetRubyVersion: 2.7
7
+ NewCops: enable
8
+ Exclude:
9
+ - vendor/**/*
7
10
 
8
11
  Metrics/ClassLength:
9
12
  Enabled: false
data/README.md CHANGED
@@ -1,9 +1,8 @@
1
- ![env_vars: Access environment variables. Also includes presence validation, type coercion and default values.](https://raw.githubusercontent.com/fnando/env_vars/master/env_vars.png)
1
+ ![env_vars: Access environment variables. Also includes presence validation, type coercion and default values.](https://raw.githubusercontent.com/fnando/env_vars/main/env_vars.png)
2
2
 
3
3
  <p align="center">
4
4
  <a href="https://travis-ci.org/fnando/env_vars"><img src="https://travis-ci.org/fnando/env_vars.svg" alt="Travis-CI"></a>
5
5
  <a href="https://codeclimate.com/github/fnando/env_vars"><img src="https://codeclimate.com/github/fnando/env_vars/badges/gpa.svg" alt="Code Climate"></a>
6
- <a href="https://codeclimate.com/github/fnando/env_vars/coverage"><img src="https://codeclimate.com/github/fnando/env_vars/badges/coverage.svg" alt="Test Coverage"></a>
7
6
  <a href="https://rubygems.org/gems/env_vars"><img src="https://img.shields.io/gem/v/env_vars.svg" alt="Gem"></a>
8
7
  <a href="https://rubygems.org/gems/env_vars"><img src="https://img.shields.io/gem/dt/env_vars.svg" alt="Gem"></a>
9
8
  </p>
@@ -87,6 +86,22 @@ end
87
86
  #=> [ENV_VARS] DATABASE_URL (the leader database) is not defined
88
87
  ```
89
88
 
89
+ I'd like to centralize access to my credentials; there's a handy mechanism for
90
+ doing that with `env_vars`:
91
+
92
+ ```ruby
93
+ Config = Env::Vars.new do
94
+ credential :api_secret_key
95
+ credential :slack_oauth_credentials do |creds|
96
+ SlackCredentials.new(creds)
97
+ end
98
+ end
99
+
100
+ Config.api_secret_key
101
+ Config.slack_oauth_credentials
102
+ #=> The value stored under `Rails.application.credentials[:api_secret_key]`
103
+ ```
104
+
90
105
  ### Types
91
106
 
92
107
  You can coerce values to the following types:
data/env_vars.gemspec CHANGED
@@ -7,6 +7,7 @@ Gem::Specification.new do |spec|
7
7
  spec.version = Env::Vars::VERSION
8
8
  spec.authors = ["Nando Vieira"]
9
9
  spec.email = ["fnando.vieira@gmail.com"]
10
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
10
11
 
11
12
  spec.summary = "Access environment variables. Also includes presence " \
12
13
  "validation, type coercion and default values."
@@ -24,6 +25,9 @@ Gem::Specification.new do |spec|
24
25
  spec.add_development_dependency "minitest"
25
26
  spec.add_development_dependency "minitest-utils"
26
27
  spec.add_development_dependency "pry-meta"
28
+ spec.add_development_dependency "rails"
27
29
  spec.add_development_dependency "rake"
30
+ spec.add_development_dependency "rubocop"
31
+ spec.add_development_dependency "rubocop-fnando"
28
32
  spec.add_development_dependency "simplecov"
29
33
  end
data/lib/env_vars.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Env
4
4
  class Vars
5
- VERSION = "1.1.0"
5
+ VERSION = "2.0.0"
6
6
  BOOL_TRUE = ["yes", "true", "1", true].freeze
7
7
  BOOL_FALSE = %w[no false].freeze
8
8
 
@@ -92,6 +92,15 @@ module Env
92
92
  end
93
93
  end
94
94
 
95
+ def credential(name, &block)
96
+ define_singleton_method(name) do
97
+ @__cache__["_credential_#{name}".to_sym] ||= begin
98
+ value = Rails.application.credentials.fetch(name)
99
+ block ? block.call(value) : value # rubocop:disable Performance/RedundantBlockCall
100
+ end
101
+ end
102
+ end
103
+
95
104
  def int
96
105
  :int
97
106
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: env_vars
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nando Vieira
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-16 00:00:00.000000000 Z
11
+ date: 2021-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rails
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: rake
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +94,34 @@ dependencies:
80
94
  - - ">="
81
95
  - !ruby/object:Gem::Version
82
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop-fnando
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
83
125
  - !ruby/object:Gem::Dependency
84
126
  name: simplecov
85
127
  requirement: !ruby/object:Gem::Requirement
@@ -102,6 +144,7 @@ executables: []
102
144
  extensions: []
103
145
  extra_rdoc_files: []
104
146
  files:
147
+ - ".github/FUNDING.yml"
105
148
  - ".gitignore"
106
149
  - ".rubocop.yml"
107
150
  - ".travis.yml"
@@ -127,14 +170,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
127
170
  requirements:
128
171
  - - ">="
129
172
  - !ruby/object:Gem::Version
130
- version: '0'
173
+ version: 2.7.0
131
174
  required_rubygems_version: !ruby/object:Gem::Requirement
132
175
  requirements:
133
176
  - - ">="
134
177
  - !ruby/object:Gem::Version
135
178
  version: '0'
136
179
  requirements: []
137
- rubygems_version: 3.1.2
180
+ rubygems_version: 3.2.22
138
181
  signing_key:
139
182
  specification_version: 4
140
183
  summary: Access environment variables. Also includes presence validation, type coercion