rails-env-credentials 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Gem Version](https://badge.fury.io/rb/rails-env-credentials.svg)](https://badge.fury.io/rb/rails-env-credentials)
|
2
|
+
[![Build Status](https://travis-ci.org/sinsoku/rails-env-credentials.svg?branch=master)](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
|