mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Tell users how to assign a $EDITOR.
In case there's no $EDITOR assigned users would see a cryptic: ``` % EDITOR= bin/rails secrets:edit Waiting for secrets file to be saved. Abort with Ctrl-C. sh: /var/folders/wd/xnncwqp96rj0v1y2nms64mq80000gn/T/secrets.yml.enc: Permission denied New secrets encrypted and saved. ``` That error is misleading, so give a hint in this easily detectable case. Fixes #28143.
This commit is contained in:
parent
b61a56541a
commit
82f7dc6178
2 changed files with 35 additions and 0 deletions
|
@ -18,6 +18,17 @@ module Rails
|
||||||
end
|
end
|
||||||
|
|
||||||
def edit
|
def edit
|
||||||
|
if ENV["EDITOR"].empty?
|
||||||
|
say "No $EDITOR to open decrypted secrets in. Assign one like this:"
|
||||||
|
say ""
|
||||||
|
say %(EDITOR="mate --wait" bin/rails secrets:edit)
|
||||||
|
say ""
|
||||||
|
say "For editors that fork and exit immediately, it's important to pass a wait flag,"
|
||||||
|
say "otherwise the secrets will be saved immediately with no chance to edit."
|
||||||
|
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
require_application_and_environment!
|
require_application_and_environment!
|
||||||
|
|
||||||
Rails::Secrets.read_for_editing do |tmp_path|
|
Rails::Secrets.read_for_editing do |tmp_path|
|
||||||
|
|
24
railties/test/commands/secrets_test.rb
Normal file
24
railties/test/commands/secrets_test.rb
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
require "isolation/abstract_unit"
|
||||||
|
require "rails/command"
|
||||||
|
require "rails/commands/secrets/secrets_command"
|
||||||
|
|
||||||
|
class Rails::Command::SecretsCommandTest < ActiveSupport::TestCase
|
||||||
|
include ActiveSupport::Testing::Isolation
|
||||||
|
|
||||||
|
def setup
|
||||||
|
build_app
|
||||||
|
end
|
||||||
|
|
||||||
|
def teardown
|
||||||
|
teardown_app
|
||||||
|
end
|
||||||
|
|
||||||
|
test "edit without editor gives hint" do
|
||||||
|
assert_match "No $EDITOR to open decrypted secrets in", run_edit_command(editor: "")
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
def run_edit_command(editor: "cat")
|
||||||
|
Dir.chdir(app_path) { `EDITOR="#{editor}" bin/rails secrets:edit` }
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue