r_creds 1.1.1 → 1.2.1
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 +4 -4
- data/README.md +5 -1
- data/lib/generators/r_creds/install_generator.rb +16 -0
- data/lib/generators/templates/r_creds_initializer.rb +8 -0
- data/lib/r_creds/fetcher.rb +44 -14
- data/lib/r_creds/version.rb +3 -1
- data/lib/r_creds.rb +37 -2
- data/r_creds.gemspec +7 -3
- metadata +26 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3d42b84fbaecb086727f4f5c2d2e4b2058b3f382f0f34d98db8b617f4f989f74
|
4
|
+
data.tar.gz: 2d9c694dfbfa9b334dc476a03451724f65f5e4c6f967e34ca7985fcdd151e541
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 197ec897f201a36bdb67f48781c4eb86d832610b71bd1095be5e11e905cda8f89d75d3aeace017774acc522a5dd0b963d6e5dd10f86dd626ef3f8286d09a25bf
|
7
|
+
data.tar.gz: 2ee6057e607e3be79f2b1159a917a497a7e78c2fa40882328ef3560e2434b75ffb7cc70b96af5d7356f44edc1a1ab45513e63a0d1eb49882307fe4404320b8a9
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# RCreds v1.
|
1
|
+
# RCreds v1.2.0 - [changelog](https://github.com/coaxsoft/r_creds/blob/master/CHANGELOG.md)
|
2
2
|
|
3
3
|
RCreds makes working with Rails 5.2/6/7 credentials easier
|
4
4
|
|
@@ -23,6 +23,10 @@ Or install it yourself as:
|
|
23
23
|
|
24
24
|
$ gem install r_creds
|
25
25
|
|
26
|
+
Run the generator:
|
27
|
+
|
28
|
+
$ rails generate r_creds:install
|
29
|
+
|
26
30
|
## Usage
|
27
31
|
There are no need to do this:
|
28
32
|
```ruby
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'rails/generators'
|
4
|
+
|
5
|
+
module RCreds
|
6
|
+
module Generators
|
7
|
+
class InstallGenerator < Rails::Generators::Base
|
8
|
+
source_root File.expand_path('../templates', __dir__)
|
9
|
+
desc 'Creates a RCreds config file.'
|
10
|
+
|
11
|
+
def copy_config
|
12
|
+
template 'r_creds_initializer.rb', "#{Rails.root}/config/initializers/r_creds.rb"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/r_creds/fetcher.rb
CHANGED
@@ -1,14 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module RCreds
|
2
4
|
class Fetcher
|
3
5
|
class NoRailsError < StandardError; end
|
6
|
+
class NilValueError < StandardError; end
|
4
7
|
|
5
|
-
def initialize(keys, default, environment)
|
8
|
+
def initialize(keys, default, environment, environment_first, allow_nil_value)
|
6
9
|
@keys = keys.map!(&:to_sym)
|
7
10
|
@default = default
|
8
11
|
@environment = environment
|
12
|
+
@environment_first = environment_first
|
13
|
+
@allow_nil_value = allow_nil_value
|
9
14
|
end
|
10
15
|
|
11
|
-
attr_reader :keys, :default
|
16
|
+
attr_reader :keys, :default, :environment_first, :allow_nil_value, :cred_value
|
12
17
|
|
13
18
|
def call
|
14
19
|
check_rails
|
@@ -21,10 +26,29 @@ module RCreds
|
|
21
26
|
(presence?(@environment) || Rails.env).to_sym
|
22
27
|
end
|
23
28
|
|
29
|
+
def check_rails
|
30
|
+
return define_rails_strategy && true if defined?(::Rails)
|
31
|
+
|
32
|
+
no_rails_error!
|
33
|
+
end
|
34
|
+
|
24
35
|
def fetch
|
25
|
-
|
36
|
+
define_cred_value
|
26
37
|
|
27
|
-
|
38
|
+
nil_value_error! if cred_value.nil? && !allow_nil_value
|
39
|
+
|
40
|
+
cred_value
|
41
|
+
end
|
42
|
+
|
43
|
+
def define_cred_value
|
44
|
+
cred = send("fetch_rails#{@rails_version}")
|
45
|
+
env = ENV[keys.join('_').upcase]
|
46
|
+
|
47
|
+
@cred_value = if environment_first.present?
|
48
|
+
presence?(env) || presence?(cred) || default
|
49
|
+
else
|
50
|
+
presence?(cred) || presence?(env) || default
|
51
|
+
end
|
28
52
|
end
|
29
53
|
|
30
54
|
def presence?(cred)
|
@@ -41,32 +65,38 @@ module RCreds
|
|
41
65
|
cred.respond_to?(:empty?) ? !!cred.empty? : !cred
|
42
66
|
end
|
43
67
|
|
44
|
-
def
|
68
|
+
def define_rails_strategy
|
69
|
+
@rails_version = Rails.version.to_i
|
70
|
+
end
|
71
|
+
|
72
|
+
def fetch_rails5
|
45
73
|
Rails.application.credentials.dig(environment, *keys)
|
46
74
|
end
|
47
75
|
|
48
|
-
def
|
76
|
+
def fetch_rails6
|
49
77
|
if rails6_multi_env?
|
50
|
-
|
78
|
+
show_warning if presence?(@environment)
|
51
79
|
Rails.application.credentials.dig(*keys)
|
52
80
|
else
|
53
81
|
Rails.application.credentials.dig(environment, *keys)
|
54
82
|
end
|
55
83
|
end
|
56
|
-
alias
|
84
|
+
alias fetch_rails7 fetch_rails6
|
57
85
|
|
58
86
|
def rails6_multi_env?
|
59
|
-
Rails.
|
87
|
+
Rails.version.to_d >= 6
|
60
88
|
end
|
61
89
|
|
62
|
-
def
|
63
|
-
|
90
|
+
def show_warning
|
91
|
+
puts "WARNING! Environment choice does not work in Rails >= 6. Fetching credentials for '#{Rails.env}'"
|
92
|
+
end
|
64
93
|
|
65
|
-
|
94
|
+
def nil_value_error!
|
95
|
+
raise NilValueError, "can not find existing value by that keys -> #{keys}"
|
66
96
|
end
|
67
97
|
|
68
|
-
def
|
69
|
-
|
98
|
+
def no_rails_error!
|
99
|
+
raise NoRailsError, 'RCreds works with 5.2 and above'
|
70
100
|
end
|
71
101
|
end
|
72
102
|
end
|
data/lib/r_creds/version.rb
CHANGED
data/lib/r_creds.rb
CHANGED
@@ -1,8 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'r_creds/version'
|
2
4
|
require_relative 'r_creds/fetcher'
|
3
5
|
|
4
6
|
module RCreds
|
5
|
-
|
6
|
-
|
7
|
+
class << self
|
8
|
+
class InvalidTypeError < StandardError; end
|
9
|
+
|
10
|
+
attr_writer :environment_first, :allow_nil_value
|
11
|
+
|
12
|
+
def environment_first
|
13
|
+
@environment_first || false
|
14
|
+
end
|
15
|
+
|
16
|
+
def allow_nil_value
|
17
|
+
@allow_nil_value || true
|
18
|
+
end
|
19
|
+
|
20
|
+
def config
|
21
|
+
yield self
|
22
|
+
end
|
23
|
+
|
24
|
+
def fetch(*keys,
|
25
|
+
default: nil,
|
26
|
+
environment: nil,
|
27
|
+
environment_first: self.environment_first,
|
28
|
+
allow_nil_value: self.allow_nil_value)
|
29
|
+
|
30
|
+
[environment_first, allow_nil_value].each do |attr|
|
31
|
+
invalid_type_error! unless [true, false].include?(attr)
|
32
|
+
end
|
33
|
+
|
34
|
+
Fetcher.new(keys, default, environment, environment_first, allow_nil_value).call
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def invalid_type_error!
|
40
|
+
raise InvalidTypeError, 'only boolean type allowed'
|
41
|
+
end
|
7
42
|
end
|
8
43
|
end
|
data/r_creds.gemspec
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
lib = File.expand_path('lib', __dir__)
|
2
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
5
|
require 'r_creds/version'
|
@@ -12,7 +14,7 @@ Gem::Specification.new do |spec|
|
|
12
14
|
spec.description = 'RCreds makes working with Rails 5.2 credentials easier'
|
13
15
|
spec.homepage = 'https://github.com/coaxsoft/r_creds'
|
14
16
|
spec.license = 'MIT'
|
15
|
-
spec.required_ruby_version = '>= 2.
|
17
|
+
spec.required_ruby_version = '>= 2.5'
|
16
18
|
|
17
19
|
# Specify which files should be added to the gem when it is released.
|
18
20
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
@@ -25,6 +27,8 @@ Gem::Specification.new do |spec|
|
|
25
27
|
spec.files = Dir['README.md', 'lib/**/*', 'lib/*', 'r_creds.gemspec']
|
26
28
|
|
27
29
|
spec.add_development_dependency 'bundler'
|
28
|
-
spec.add_development_dependency '
|
29
|
-
spec.add_development_dependency '
|
30
|
+
spec.add_development_dependency 'railties', '~> 7.0'
|
31
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
32
|
+
spec.add_development_dependency 'rspec', '~> 3.11'
|
33
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
30
34
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: r_creds
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- OrestF
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-03-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -24,34 +24,48 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: railties
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '7.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '7.0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rake
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
45
|
- - "~>"
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
47
|
+
version: '13.0'
|
34
48
|
type: :development
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
52
|
- - "~>"
|
39
53
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
54
|
+
version: '13.0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rspec
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
59
|
- - "~>"
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version: '3.
|
61
|
+
version: '3.11'
|
48
62
|
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
66
|
- - "~>"
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version: '3.
|
68
|
+
version: '3.11'
|
55
69
|
description: RCreds makes working with Rails 5.2 credentials easier
|
56
70
|
email:
|
57
71
|
- falchuko@gmail.com
|
@@ -60,6 +74,8 @@ extensions: []
|
|
60
74
|
extra_rdoc_files: []
|
61
75
|
files:
|
62
76
|
- README.md
|
77
|
+
- lib/generators/r_creds/install_generator.rb
|
78
|
+
- lib/generators/templates/r_creds_initializer.rb
|
63
79
|
- lib/r_creds.rb
|
64
80
|
- lib/r_creds/fetcher.rb
|
65
81
|
- lib/r_creds/version.rb
|
@@ -67,7 +83,8 @@ files:
|
|
67
83
|
homepage: https://github.com/coaxsoft/r_creds
|
68
84
|
licenses:
|
69
85
|
- MIT
|
70
|
-
metadata:
|
86
|
+
metadata:
|
87
|
+
rubygems_mfa_required: 'true'
|
71
88
|
post_install_message:
|
72
89
|
rdoc_options: []
|
73
90
|
require_paths:
|
@@ -76,14 +93,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
76
93
|
requirements:
|
77
94
|
- - ">="
|
78
95
|
- !ruby/object:Gem::Version
|
79
|
-
version: 2.
|
96
|
+
version: '2.5'
|
80
97
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
98
|
requirements:
|
82
99
|
- - ">="
|
83
100
|
- !ruby/object:Gem::Version
|
84
101
|
version: '0'
|
85
102
|
requirements: []
|
86
|
-
rubygems_version: 3.
|
103
|
+
rubygems_version: 3.4.6
|
87
104
|
signing_key:
|
88
105
|
specification_version: 4
|
89
106
|
summary: RCreds makes working with Rails 5.2 credentials easier
|