rails-env-credentials 0.0.1 → 0.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 +4 -4
- data/Gemfile +0 -2
- data/README.md +44 -67
- data/config/environments/development.rb +0 -0
- data/config/environments/production.rb +0 -0
- data/config/environments/staging.rb +0 -0
- data/config/environments/test.rb +0 -0
- data/lib/rails/commands/env_credentials_command.rb +66 -0
- data/lib/rails_env_credentials.rb +17 -11
- data/lib/rails_env_credentials/config.rb +34 -0
- data/lib/rails_env_credentials/{credentials_loading.rb → credentials_overwrite.rb} +1 -1
- data/lib/rails_env_credentials/railtie.rb +1 -3
- data/lib/rails_env_credentials/version.rb +1 -1
- data/rails-env-credentials.gemspec +3 -4
- metadata +25 -13
- data/Gemfile.lock +0 -143
- data/lib/rails_env_credentials/command.rb +0 -21
- data/lib/rails_env_credentials/command/environment_loading.rb +0 -17
- data/lib/rails_env_credentials/command/master_key_path_reloading.rb +0 -11
- data/lib/rails_env_credentials/configuration.rb +0 -56
- data/lib/rails_env_credentials/encrypted_configuration.rb +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 363b33c0c34aeb3dad04152477f1e528b47b9ab085e4360f4222aacfb5bfc348
|
4
|
+
data.tar.gz: fca49e47dabee021fbeb639adde223f696bea9dd6f6bae68c736fbf528eb7209
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 15a9a335dc2eb2f32919d2d6d8f778051c120f0f684d5f9a99a6bc0df039b9a4328337e1e180d0ace296f8c41f7cf063b296976bc8bed321e654a60decc0526c
|
7
|
+
data.tar.gz: 7584a2d9f323183ad2aeb3b325053b97d479f3a51dbc080bb213f09b110339ccf38ca833179573d076cce409d0e6a4748f6ee2213f6c03e24bd3d2c9653b82a6
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,102 +1,79 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
RailsEnvCredentials enhances the credentials configuration introduced by Rails v5.2.0.
|
4
|
-
|
5
|
-
It make that `Rails.application.credentials` returns environment specific credentials.
|
6
|
-
|
7
|
-
## Features
|
1
|
+
[](https://badge.fury.io/rb/rails-env-credentials)
|
2
|
+
[](https://travis-ci.org/sinsoku/rails-env-credentials)
|
8
3
|
|
9
|
-
|
4
|
+
# RailsEnvCredentials
|
10
5
|
|
11
|
-
|
6
|
+
It enhances the Credentials feature introduced by Rails v5.2.0.
|
12
7
|
|
13
|
-
|
8
|
+
## Why make it?
|
14
9
|
|
15
|
-
|
16
|
-
# config/credentials-development.yml.enc
|
17
|
-
token: xxx
|
18
|
-
```
|
10
|
+
Credentials is a good feature, but we cannot use it on development and test environment.
|
19
11
|
|
20
|
-
|
21
|
-
# config/credentials.yml.enc
|
22
|
-
token: xxx
|
23
|
-
```
|
12
|
+
DHH wrote as follow in the pull request for initial implementation:
|
24
13
|
|
25
|
-
|
14
|
+
> It's only in production (and derivative environments, like exposed betas) where the secret actually needs to be secret.
|
15
|
+
>
|
16
|
+
> refs: https://github.com/rails/rails/pull/30067
|
26
17
|
|
27
|
-
|
18
|
+
However, I have to manage secrets in the staging environment.
|
28
19
|
|
29
|
-
|
30
|
-
# config/credentials.yml.enc
|
31
|
-
development:
|
32
|
-
token: xxx
|
20
|
+
I do not have the confidence to explain explicit use cases to Rails team, so I implemented as a gem.
|
33
21
|
|
34
|
-
|
35
|
-
token: xxx
|
36
|
-
|
37
|
-
production:
|
38
|
-
token: xxx
|
39
|
-
```
|
22
|
+
If many people use it, I would like to send a pull request to Rails.:octocat::heart:
|
40
23
|
|
41
24
|
## Installation
|
42
25
|
|
43
|
-
Add this line to your application's Gemfile:
|
26
|
+
Add this line to your Rails application's Gemfile:
|
44
27
|
|
45
28
|
```ruby
|
46
|
-
|
29
|
+
group :development, :test do
|
30
|
+
gem 'rails-env-credentials'
|
31
|
+
end
|
47
32
|
```
|
48
33
|
|
49
|
-
|
34
|
+
And then execute:
|
50
35
|
|
51
|
-
```
|
52
|
-
|
36
|
+
```
|
37
|
+
$ bundle
|
53
38
|
```
|
54
39
|
|
55
40
|
## Usage
|
56
41
|
|
57
|
-
|
58
|
-
|
59
|
-
### Case 1: Specify config file per env
|
42
|
+
RailsEnvCredentials will automatically generate encrypted file and the master key when you starts editing credentials at first:
|
60
43
|
|
61
|
-
```
|
62
|
-
|
63
|
-
RailsEnvCredentials.configure do |config|
|
64
|
-
config.development = {
|
65
|
-
config_path: "config/credentials-development.yml.enc",
|
66
|
-
key_path: "config/development.key",
|
67
|
-
env_key: "RAILS_DEVELOPMENT_KEY",
|
68
|
-
}
|
69
|
-
|
70
|
-
config.test = {
|
71
|
-
config_path: "config/credentials-test.yml.enc",
|
72
|
-
key_path: "config/test.key",
|
73
|
-
env_key: "RAILS_TEST_KEY",
|
74
|
-
}
|
75
|
-
end
|
44
|
+
```
|
45
|
+
$ rails env_credentials:edit -e development
|
76
46
|
```
|
77
47
|
|
78
|
-
|
48
|
+
If you want to see decrypted contents, use `env_credentials:show`
|
79
49
|
|
80
|
-
```ruby
|
81
|
-
# config/application.rb
|
82
|
-
RailsEnvCredentials.configure do |config|
|
83
|
-
config.default[:include_env] = true
|
84
|
-
end
|
85
50
|
```
|
51
|
+
$ rails env_credentials:show -e development
|
52
|
+
```
|
53
|
+
|
54
|
+
## Additional information
|
86
55
|
|
87
|
-
###
|
56
|
+
### Other environments support
|
88
57
|
|
89
|
-
|
58
|
+
For example, if the `config/environments/staging.rb` exists, RailsEnvCredentials will automatically generate `config/credentials-staging.yml.enc`.
|
59
|
+
|
60
|
+
### Display a diff
|
61
|
+
|
62
|
+
You can’t directly compare encrypted files between two versions, but it turns out you can see a diff using Git attributes.
|
63
|
+
|
64
|
+
Put the following line in your `.gitattributes` file:
|
90
65
|
|
91
|
-
```
|
92
|
-
|
66
|
+
```
|
67
|
+
config/credentials*.yml.enc diff=env_credentials
|
93
68
|
```
|
94
69
|
|
95
|
-
|
70
|
+
Then configure Git to use `env_credentials:show`:
|
96
71
|
|
97
|
-
```bash
|
98
|
-
$ rails credentials:edit -e production
|
99
72
|
```
|
73
|
+
$ git config diff.env_credentials.textconv 'rails env_credentials:show --file'
|
74
|
+
```
|
75
|
+
|
76
|
+
This tells Git that encrypted files should decrypt by the `env_credentials:show` task when you try to display a diff.
|
100
77
|
|
101
78
|
## Development
|
102
79
|
|
@@ -114,4 +91,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
|
|
114
91
|
|
115
92
|
## Code of Conduct
|
116
93
|
|
117
|
-
Everyone interacting in the Rails::Env::Credentials project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/
|
94
|
+
Everyone interacting in the Rails::Env::Credentials project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/sinsoku/rails-env-credentials/blob/master/CODE_OF_CONDUCT.md).
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "rails/command/environment_argument"
|
4
|
+
require "rails/commands/credentials/credentials_command"
|
5
|
+
require "rails_env_credentials"
|
6
|
+
|
7
|
+
using(Module.new do
|
8
|
+
refine Module do
|
9
|
+
def const_set!(name, value)
|
10
|
+
remove_const(name)
|
11
|
+
const_set(name, value)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end)
|
15
|
+
|
16
|
+
module Rails
|
17
|
+
module Command
|
18
|
+
class EnvCredentialsCommand < Rails::Command::CredentialsCommand
|
19
|
+
include EnvironmentArgument
|
20
|
+
|
21
|
+
argument :file, optional: true, banner: "file"
|
22
|
+
class_option :file, aliases: "-f", type: :string
|
23
|
+
|
24
|
+
def edit
|
25
|
+
set_credentials_env_from_argument!
|
26
|
+
super
|
27
|
+
end
|
28
|
+
|
29
|
+
def show
|
30
|
+
set_credentials_env_from_argument!
|
31
|
+
super
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def set_credentials_env_from_argument!
|
37
|
+
extract_environment_option_from_argument
|
38
|
+
|
39
|
+
if options.file
|
40
|
+
RailsEnvCredentials.config_path = options.file
|
41
|
+
elsif available_environments.include?(options.environment)
|
42
|
+
RailsEnvCredentials.env = options[:environment]
|
43
|
+
else
|
44
|
+
raise "'#{options.environment}' environment is not found. Available: #{available_environments}"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def master_key_generator
|
49
|
+
require "rails/generators"
|
50
|
+
require "rails/generators/rails/master_key/master_key_generator"
|
51
|
+
|
52
|
+
key_path = RailsEnvCredentials.options[:key_path]
|
53
|
+
Rails::Generators::MasterKeyGenerator.const_set!(:MASTER_KEY_PATH, Pathname.new(key_path))
|
54
|
+
Rails::Generators::MasterKeyGenerator.new
|
55
|
+
end
|
56
|
+
|
57
|
+
def credentials_generator
|
58
|
+
require "rails/generators"
|
59
|
+
require "rails/generators/rails/credentials/credentials_generator"
|
60
|
+
|
61
|
+
Rails::Generators::CredentialsGenerator.prepend(RailsEnvCredentials::CredentialsOverwrite)
|
62
|
+
Rails::Generators::CredentialsGenerator.new
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -1,26 +1,32 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "active_support/core_ext/module/delegation"
|
4
3
|
require "rails"
|
5
|
-
|
6
|
-
require "rails_env_credentials/
|
7
|
-
require "rails_env_credentials/credentials_loading"
|
4
|
+
require "rails_env_credentials/config"
|
5
|
+
require "rails_env_credentials/credentials_overwrite"
|
8
6
|
require "rails_env_credentials/railtie"
|
9
7
|
require "rails_env_credentials/version"
|
10
8
|
|
11
9
|
module RailsEnvCredentials
|
12
10
|
class << self
|
13
|
-
|
11
|
+
def config_path=(path)
|
12
|
+
if path.end_with?('credentials.yml.enc')
|
13
|
+
env = 'production'
|
14
|
+
else
|
15
|
+
env = /-(\w+)\.yml\.enc\Z/.match(path).to_a[1]
|
16
|
+
end
|
17
|
+
@config = Config.new(env: env, config_path: path)
|
18
|
+
end
|
14
19
|
|
15
|
-
def
|
16
|
-
|
17
|
-
config.reload!
|
20
|
+
def env=(env)
|
21
|
+
@config = Config.new(env: env)
|
18
22
|
end
|
19
23
|
|
20
|
-
|
24
|
+
def options
|
25
|
+
(@config || Config.new).to_options
|
26
|
+
end
|
21
27
|
|
22
|
-
def
|
23
|
-
|
28
|
+
def credentials
|
29
|
+
ActiveSupport::EncryptedConfiguration.new(options)
|
24
30
|
end
|
25
31
|
end
|
26
32
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RailsEnvCredentials
|
4
|
+
class Config
|
5
|
+
attr_reader :env
|
6
|
+
|
7
|
+
def initialize(env: nil, config_path: nil)
|
8
|
+
@env = env.nil? ? Rails.env : ActiveSupport::StringInquirer.new(env)
|
9
|
+
@config_path = config_path
|
10
|
+
end
|
11
|
+
|
12
|
+
def to_options
|
13
|
+
env_key = env_suffix("RAILS_MASTER_KEY", "_").upcase
|
14
|
+
key_path = "config/#{env_suffix("master")}.key"
|
15
|
+
|
16
|
+
{
|
17
|
+
config_path: config_path,
|
18
|
+
env_key: env_key,
|
19
|
+
key_path: key_path,
|
20
|
+
raise_if_missing_key: false
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def config_path
|
27
|
+
@config_path || "config/#{env_suffix("credentials")}.yml.enc"
|
28
|
+
end
|
29
|
+
|
30
|
+
def env_suffix(str, suffix = "-")
|
31
|
+
env.production? ? str : [str, suffix, env].join
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -1,11 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "rails_env_credentials/credentials_loading"
|
4
|
-
|
5
3
|
module RailsEnvCredentials
|
6
4
|
class Railtie < ::Rails::Railtie
|
7
5
|
initializer 'rails-env-credentials' do
|
8
|
-
Rails::Application.prepend(
|
6
|
+
Rails::Application.prepend(CredentialsOverwrite)
|
9
7
|
end
|
10
8
|
end
|
11
9
|
end
|
@@ -10,8 +10,8 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.authors = ["sinsoku"]
|
11
11
|
spec.email = ["sinsoku.listy@gmail.com"]
|
12
12
|
|
13
|
-
spec.summary = "It enhances the credentials configuration
|
14
|
-
spec.description = "It enhances the credentials configuration
|
13
|
+
spec.summary = "It enhances the credentials configuration introduced by Rails v5.2.0"
|
14
|
+
spec.description = "It enhances the credentials configuration introduced by Rails v5.2.0"
|
15
15
|
spec.homepage = "https://github.com/sinsoku/rails-env-credentials"
|
16
16
|
spec.license = "MIT"
|
17
17
|
|
@@ -22,8 +22,7 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
23
23
|
spec.require_paths = ["lib"]
|
24
24
|
|
25
|
-
|
26
|
-
# spec.add_dependency "rails", ">= 5.2.0"
|
25
|
+
spec.add_dependency "rails", ">= 5.2.0.rc1"
|
27
26
|
|
28
27
|
spec.add_development_dependency "bundler", "~> 1.16"
|
29
28
|
spec.add_development_dependency "rake", "~> 10.0"
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails-env-credentials
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sinsoku
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 5.2.0.rc1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 5.2.0.rc1
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bundler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,8 +66,7 @@ dependencies:
|
|
52
66
|
- - "~>"
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '3.0'
|
55
|
-
description: It enhances the credentials configuration
|
56
|
-
Rails v5.2.0
|
69
|
+
description: It enhances the credentials configuration introduced by Rails v5.2.0
|
57
70
|
email:
|
58
71
|
- sinsoku.listy@gmail.com
|
59
72
|
executables: []
|
@@ -65,20 +78,20 @@ files:
|
|
65
78
|
- ".travis.yml"
|
66
79
|
- CODE_OF_CONDUCT.md
|
67
80
|
- Gemfile
|
68
|
-
- Gemfile.lock
|
69
81
|
- LICENSE.txt
|
70
82
|
- README.md
|
71
83
|
- Rakefile
|
72
84
|
- bin/console
|
73
85
|
- bin/setup
|
86
|
+
- config/environments/development.rb
|
87
|
+
- config/environments/production.rb
|
88
|
+
- config/environments/staging.rb
|
89
|
+
- config/environments/test.rb
|
74
90
|
- lib/rails-env-credentials.rb
|
91
|
+
- lib/rails/commands/env_credentials_command.rb
|
75
92
|
- lib/rails_env_credentials.rb
|
76
|
-
- lib/rails_env_credentials/
|
77
|
-
- lib/rails_env_credentials/
|
78
|
-
- lib/rails_env_credentials/command/master_key_path_reloading.rb
|
79
|
-
- lib/rails_env_credentials/configuration.rb
|
80
|
-
- lib/rails_env_credentials/credentials_loading.rb
|
81
|
-
- lib/rails_env_credentials/encrypted_configuration.rb
|
93
|
+
- lib/rails_env_credentials/config.rb
|
94
|
+
- lib/rails_env_credentials/credentials_overwrite.rb
|
82
95
|
- lib/rails_env_credentials/railtie.rb
|
83
96
|
- lib/rails_env_credentials/version.rb
|
84
97
|
- rails-env-credentials.gemspec
|
@@ -105,6 +118,5 @@ rubyforge_project:
|
|
105
118
|
rubygems_version: 2.7.3
|
106
119
|
signing_key:
|
107
120
|
specification_version: 4
|
108
|
-
summary: It enhances the credentials configuration
|
109
|
-
v5.2.0
|
121
|
+
summary: It enhances the credentials configuration introduced by Rails v5.2.0
|
110
122
|
test_files: []
|
data/Gemfile.lock
DELETED
@@ -1,143 +0,0 @@
|
|
1
|
-
GIT
|
2
|
-
remote: https://github.com/rails/rails
|
3
|
-
revision: 921b877c2fd51cc0abdcf0ef6ca3528808047056
|
4
|
-
specs:
|
5
|
-
actioncable (5.2.0.beta2)
|
6
|
-
actionpack (= 5.2.0.beta2)
|
7
|
-
nio4r (~> 2.0)
|
8
|
-
websocket-driver (~> 0.6.1)
|
9
|
-
actionmailer (5.2.0.beta2)
|
10
|
-
actionpack (= 5.2.0.beta2)
|
11
|
-
actionview (= 5.2.0.beta2)
|
12
|
-
activejob (= 5.2.0.beta2)
|
13
|
-
mail (~> 2.5, >= 2.5.4)
|
14
|
-
rails-dom-testing (~> 2.0)
|
15
|
-
actionpack (5.2.0.beta2)
|
16
|
-
actionview (= 5.2.0.beta2)
|
17
|
-
activesupport (= 5.2.0.beta2)
|
18
|
-
rack (~> 2.0)
|
19
|
-
rack-test (>= 0.6.3)
|
20
|
-
rails-dom-testing (~> 2.0)
|
21
|
-
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
22
|
-
actionview (5.2.0.beta2)
|
23
|
-
activesupport (= 5.2.0.beta2)
|
24
|
-
builder (~> 3.1)
|
25
|
-
erubi (~> 1.4)
|
26
|
-
rails-dom-testing (~> 2.0)
|
27
|
-
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
28
|
-
activejob (5.2.0.beta2)
|
29
|
-
activesupport (= 5.2.0.beta2)
|
30
|
-
globalid (>= 0.3.6)
|
31
|
-
activemodel (5.2.0.beta2)
|
32
|
-
activesupport (= 5.2.0.beta2)
|
33
|
-
activerecord (5.2.0.beta2)
|
34
|
-
activemodel (= 5.2.0.beta2)
|
35
|
-
activesupport (= 5.2.0.beta2)
|
36
|
-
arel (>= 9.0)
|
37
|
-
activestorage (5.2.0.beta2)
|
38
|
-
actionpack (= 5.2.0.beta2)
|
39
|
-
activerecord (= 5.2.0.beta2)
|
40
|
-
activesupport (5.2.0.beta2)
|
41
|
-
concurrent-ruby (~> 1.0, >= 1.0.2)
|
42
|
-
i18n (~> 0.7)
|
43
|
-
minitest (~> 5.1)
|
44
|
-
tzinfo (~> 1.1)
|
45
|
-
rails (5.2.0.beta2)
|
46
|
-
actioncable (= 5.2.0.beta2)
|
47
|
-
actionmailer (= 5.2.0.beta2)
|
48
|
-
actionpack (= 5.2.0.beta2)
|
49
|
-
actionview (= 5.2.0.beta2)
|
50
|
-
activejob (= 5.2.0.beta2)
|
51
|
-
activemodel (= 5.2.0.beta2)
|
52
|
-
activerecord (= 5.2.0.beta2)
|
53
|
-
activestorage (= 5.2.0.beta2)
|
54
|
-
activesupport (= 5.2.0.beta2)
|
55
|
-
bundler (>= 1.3.0)
|
56
|
-
railties (= 5.2.0.beta2)
|
57
|
-
sprockets-rails (>= 2.0.0)
|
58
|
-
railties (5.2.0.beta2)
|
59
|
-
actionpack (= 5.2.0.beta2)
|
60
|
-
activesupport (= 5.2.0.beta2)
|
61
|
-
method_source
|
62
|
-
rake (>= 0.8.7)
|
63
|
-
thor (>= 0.18.1, < 2.0)
|
64
|
-
|
65
|
-
PATH
|
66
|
-
remote: .
|
67
|
-
specs:
|
68
|
-
rails-env-credentials (0.0.1)
|
69
|
-
|
70
|
-
GEM
|
71
|
-
remote: https://rubygems.org/
|
72
|
-
specs:
|
73
|
-
arel (9.0.0)
|
74
|
-
builder (3.2.3)
|
75
|
-
concurrent-ruby (1.0.5)
|
76
|
-
crass (1.0.3)
|
77
|
-
diff-lcs (1.3)
|
78
|
-
erubi (1.7.0)
|
79
|
-
globalid (0.4.1)
|
80
|
-
activesupport (>= 4.2.0)
|
81
|
-
i18n (0.9.1)
|
82
|
-
concurrent-ruby (~> 1.0)
|
83
|
-
loofah (2.1.1)
|
84
|
-
crass (~> 1.0.2)
|
85
|
-
nokogiri (>= 1.5.9)
|
86
|
-
mail (2.7.0)
|
87
|
-
mini_mime (>= 0.1.1)
|
88
|
-
method_source (0.9.0)
|
89
|
-
mini_mime (1.0.0)
|
90
|
-
mini_portile2 (2.3.0)
|
91
|
-
minitest (5.11.0)
|
92
|
-
nio4r (2.2.0)
|
93
|
-
nokogiri (1.8.1)
|
94
|
-
mini_portile2 (~> 2.3.0)
|
95
|
-
rack (2.0.3)
|
96
|
-
rack-test (0.8.2)
|
97
|
-
rack (>= 1.0, < 3)
|
98
|
-
rails-dom-testing (2.0.3)
|
99
|
-
activesupport (>= 4.2.0)
|
100
|
-
nokogiri (>= 1.6)
|
101
|
-
rails-html-sanitizer (1.0.3)
|
102
|
-
loofah (~> 2.0)
|
103
|
-
rake (10.5.0)
|
104
|
-
rspec (3.7.0)
|
105
|
-
rspec-core (~> 3.7.0)
|
106
|
-
rspec-expectations (~> 3.7.0)
|
107
|
-
rspec-mocks (~> 3.7.0)
|
108
|
-
rspec-core (3.7.0)
|
109
|
-
rspec-support (~> 3.7.0)
|
110
|
-
rspec-expectations (3.7.0)
|
111
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
112
|
-
rspec-support (~> 3.7.0)
|
113
|
-
rspec-mocks (3.7.0)
|
114
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
115
|
-
rspec-support (~> 3.7.0)
|
116
|
-
rspec-support (3.7.0)
|
117
|
-
sprockets (3.7.1)
|
118
|
-
concurrent-ruby (~> 1.0)
|
119
|
-
rack (> 1, < 3)
|
120
|
-
sprockets-rails (3.2.1)
|
121
|
-
actionpack (>= 4.0)
|
122
|
-
activesupport (>= 4.0)
|
123
|
-
sprockets (>= 3.0.0)
|
124
|
-
thor (0.20.0)
|
125
|
-
thread_safe (0.3.6)
|
126
|
-
tzinfo (1.2.4)
|
127
|
-
thread_safe (~> 0.1)
|
128
|
-
websocket-driver (0.6.5)
|
129
|
-
websocket-extensions (>= 0.1.0)
|
130
|
-
websocket-extensions (0.1.3)
|
131
|
-
|
132
|
-
PLATFORMS
|
133
|
-
ruby
|
134
|
-
|
135
|
-
DEPENDENCIES
|
136
|
-
bundler (~> 1.16)
|
137
|
-
rails!
|
138
|
-
rails-env-credentials!
|
139
|
-
rake (~> 10.0)
|
140
|
-
rspec (~> 3.0)
|
141
|
-
|
142
|
-
BUNDLED WITH
|
143
|
-
1.16.1
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "rails_env_credentials"
|
4
|
-
require "rails_env_credentials/command/environment_loading"
|
5
|
-
require "rails_env_credentials/command/master_key_path_reloading"
|
6
|
-
|
7
|
-
# Allow environment argument in `credentials:edit` command
|
8
|
-
require "rails/command"
|
9
|
-
require "rails/commands/credentials/credentials_command"
|
10
|
-
require "rails/command/environment_argument"
|
11
|
-
Rails::Command::CredentialsCommand.include(Rails::Command::EnvironmentArgument)
|
12
|
-
Rails::Command::CredentialsCommand.prepend(RailsEnvCredentials::EnvironmentLoading)
|
13
|
-
|
14
|
-
# Reload master key path before use it
|
15
|
-
require "rails/generators"
|
16
|
-
require "rails/generators/rails/master_key/master_key_generator"
|
17
|
-
Rails::Generators::MasterKeyGenerator.prepend(RailsEnvCredentials::MasterKeyPathReloading)
|
18
|
-
|
19
|
-
# Use EnvCredentials instead of original credentials
|
20
|
-
require "rails/generators/rails/credentials/credentials_generator"
|
21
|
-
Rails::Generators::CredentialsGenerator.prepend(RailsEnvCredentials::CredentialsLoading)
|
@@ -1,17 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RailsEnvCredentials
|
4
|
-
module EnvironmentLoading
|
5
|
-
def edit
|
6
|
-
extract_environment_option_from_argument
|
7
|
-
ENV["RAILS_ENV"] = options[:environment]
|
8
|
-
super
|
9
|
-
end
|
10
|
-
|
11
|
-
def show
|
12
|
-
extract_environment_option_from_argument
|
13
|
-
ENV["RAILS_ENV"] = options[:environment]
|
14
|
-
super
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RailsEnvCredentials
|
4
|
-
module MasterKeyPathReloading
|
5
|
-
def add_master_key_file
|
6
|
-
self.class.send(:remove_const, :MASTER_KEY_PATH)
|
7
|
-
self.class.const_set(:MASTER_KEY_PATH, Pathname.new(RailsEnvCredentials.key_path))
|
8
|
-
super
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "rails_env_credentials/encrypted_configuration"
|
4
|
-
|
5
|
-
module RailsEnvCredentials
|
6
|
-
class Configuration
|
7
|
-
attr_accessor :default
|
8
|
-
delegate :[], :fetch, to: :env_config
|
9
|
-
delegate_missing_to :env_config
|
10
|
-
|
11
|
-
def initialize
|
12
|
-
@default = {
|
13
|
-
config_path: "config/credentials.yml.enc",
|
14
|
-
key_path: "config/master.key",
|
15
|
-
env_key: "RAILS_MASTER_KEY",
|
16
|
-
require_master_key: false,
|
17
|
-
include_env: false
|
18
|
-
}
|
19
|
-
end
|
20
|
-
|
21
|
-
def credentials
|
22
|
-
EncryptedConfiguration.new(
|
23
|
-
config_path: Rails.root.join(current_config[:config_path]),
|
24
|
-
key_path: Rails.root.join(current_config[:key_path]),
|
25
|
-
env_key: current_config[:env_key],
|
26
|
-
raise_if_missing_key: current_config[:require_master_key]
|
27
|
-
)
|
28
|
-
end
|
29
|
-
|
30
|
-
def include_env?
|
31
|
-
current_config[:include_env]
|
32
|
-
end
|
33
|
-
|
34
|
-
def key_path
|
35
|
-
current_config[:key_path]
|
36
|
-
end
|
37
|
-
|
38
|
-
def reload!
|
39
|
-
@current_config = nil
|
40
|
-
end
|
41
|
-
|
42
|
-
private
|
43
|
-
|
44
|
-
def current_config
|
45
|
-
@current_config ||= default.merge(env_config[Rails.env])
|
46
|
-
end
|
47
|
-
|
48
|
-
def env_config
|
49
|
-
@env_config ||= ActiveSupport::InheritableOptions.new(
|
50
|
-
development: {},
|
51
|
-
test: {},
|
52
|
-
production: {}
|
53
|
-
)
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "active_support/encrypted_configuration"
|
4
|
-
|
5
|
-
module RailsEnvCredentials
|
6
|
-
class EncryptedConfiguration < ActiveSupport::EncryptedConfiguration
|
7
|
-
def config
|
8
|
-
if RailsEnvCredentials.include_env?
|
9
|
-
super[Rails.env.to_sym] || {}
|
10
|
-
else
|
11
|
-
super
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|