r_creds 1.1.1 → 1.2.0

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
  SHA256:
3
- metadata.gz: 7636928cd93f004b5d651ffca982183ae1d14affc19eb4521110f9e27f1d6342
4
- data.tar.gz: 41aa95eb3f6844fdcce9ef52d1d0f4b17214ab11ea5f9495498e7418350a7cdf
3
+ metadata.gz: 57e20d024695254a526587f77b6a61cf8b9c51c19a09b71be4f05d392c6b80c1
4
+ data.tar.gz: 19088da2f4c05df90f15c3ba1a150c53831693170d074a7ada79f5317f07ff8a
5
5
  SHA512:
6
- metadata.gz: b887e3669f71b8a33dd5b94fd58cbc9aa1c445dad0cf42c3e54c2fd5fa388c087773c49f6111d8549dd3656b659bd3785bd81dff3f224610ab3e5a52e3808c66
7
- data.tar.gz: 04b881382bf4e54669fd6874f37674961ba7e820bf770fbd27ee7385bf092d42e4a8792f82063410ae9f314ac214ca6f969d4c6ec782c72ddef08e63886bd385
6
+ metadata.gz: fbcbcbfd8c79efc2446f1da258368a7a2459bda119726d6bdca5d0ca67dc0f4afd007a72744138c557e43a14c98b8e28bf5b14e45aa14c6878d0d31e330b3e5c
7
+ data.tar.gz: 3830c5b4321bde44ebedcc1cb9cf264fb8bb763581e5c3b86547a438cd9f5efba4000f24358640a891ed8b22842688ac5cb698b934114e5d621571814ae07a9e
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # RCreds v1.1.1 - [changelog](https://github.com/coaxsoft/r_creds/blob/master/CHANGELOG.md)
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
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'r_creds'
4
+
5
+ RCreds.config do |c|
6
+ # c.environment_first = boolean # default: false
7
+ # c.allow_nil_value = boolean # default: true
8
+ end
@@ -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
- cred = send("fetch_rails_#{@rails_version}")
36
+ define_cred_value
26
37
 
27
- presence?(cred) || presence?(ENV[keys.join('_').upcase]) || default
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 fetch_rails_5
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 fetch_rails_6
76
+ def fetch_rails6
49
77
  if rails6_multi_env?
50
- puts "WARNING! Environment choice does not work in Rails >= 6. Fetching credentials for '#{Rails.env}'" if presence?(@environment)
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 fetch_rails_7 fetch_rails_6
84
+ alias fetch_rails7 fetch_rails6
57
85
 
58
86
  def rails6_multi_env?
59
87
  Rails.application.credentials.content_path.basename.to_s != 'credentials.yml.enc'
60
88
  end
61
89
 
62
- def check_rails
63
- return define_rails_strategy && true if defined?(::Rails)
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
- raise NoRailsError, 'RCreds works with 5.2 and above'
94
+ def nil_value_error!
95
+ raise NilValueError, "can not find existing value by that keys -> #{keys}"
66
96
  end
67
97
 
68
- def define_rails_strategy
69
- @rails_version = Rails.version.to_i
98
+ def no_rails_error!
99
+ raise NoRailsError, 'RCreds works with 5.2 and above'
70
100
  end
71
101
  end
72
102
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCreds
2
- VERSION = '1.1.1'.freeze
4
+ VERSION = '1.2.0'
3
5
  end
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
- def self.fetch(*keys, default: nil, environment: nil)
6
- Fetcher.new(keys, default, environment).call
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.2.0'
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 'rake', '~> 12.3'
29
- spec.add_development_dependency 'rspec', '~> 3.0'
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.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - OrestF
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-03-30 00:00:00.000000000 Z
11
+ date: 2022-04-15 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: '12.3'
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: '12.3'
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.0'
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.0'
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.2.0
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.1.6
103
+ rubygems_version: 3.3.7
87
104
  signing_key:
88
105
  specification_version: 4
89
106
  summary: RCreds makes working with Rails 5.2 credentials easier