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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7636928cd93f004b5d651ffca982183ae1d14affc19eb4521110f9e27f1d6342
4
- data.tar.gz: 41aa95eb3f6844fdcce9ef52d1d0f4b17214ab11ea5f9495498e7418350a7cdf
3
+ metadata.gz: 3d42b84fbaecb086727f4f5c2d2e4b2058b3f382f0f34d98db8b617f4f989f74
4
+ data.tar.gz: 2d9c694dfbfa9b334dc476a03451724f65f5e4c6f967e34ca7985fcdd151e541
5
5
  SHA512:
6
- metadata.gz: b887e3669f71b8a33dd5b94fd58cbc9aa1c445dad0cf42c3e54c2fd5fa388c087773c49f6111d8549dd3656b659bd3785bd81dff3f224610ab3e5a52e3808c66
7
- data.tar.gz: 04b881382bf4e54669fd6874f37674961ba7e820bf770fbd27ee7385bf092d42e4a8792f82063410ae9f314ac214ca6f969d4c6ec782c72ddef08e63886bd385
6
+ metadata.gz: 197ec897f201a36bdb67f48781c4eb86d832610b71bd1095be5e11e905cda8f89d75d3aeace017774acc522a5dd0b963d6e5dd10f86dd626ef3f8286d09a25bf
7
+ data.tar.gz: 2ee6057e607e3be79f2b1159a917a497a7e78c2fa40882328ef3560e2434b75ffb7cc70b96af5d7356f44edc1a1ab45513e63a0d1eb49882307fe4404320b8a9
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
- Rails.application.credentials.content_path.basename.to_s != 'credentials.yml.enc'
87
+ Rails.version.to_d >= 6
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.1'
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.1
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: 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: '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.4.6
87
104
  signing_key:
88
105
  specification_version: 4
89
106
  summary: RCreds makes working with Rails 5.2 credentials easier