为何使用--wait参数后Rails credentials仍立即加密保存?
Rails Credentials编辑问题:编辑器立即关闭并加密保存的解决方法
问题现象
执行EDITOR="subl --wait" bin/rails credentials:edit后,Sublime会打开credentials文件,但Rails立即执行加密保存,没有编辑时间;同时设置其他编辑器(如nano、vim)时,始终默认打开Sublime,环境变量EDITOR的临时设置无效。
原因分析
- 全局
EDITOR环境变量优先级更高:系统已全局设置EDITOR=subl,导致命令行临时设置的EDITOR参数被覆盖。 - Sublime的
--wait参数未生效:部分Sublime版本中--wait参数无法让Rails等待编辑器关闭,导致Rails误判编辑完成。
解决步骤
1. 强制临时覆盖全局环境变量
如果全局EDITOR设置导致临时参数无效,可通过env命令强制指定:
env EDITOR="subl --wait" bin/rails credentials:edit
或者先取消全局变量再执行:
unset EDITOR && EDITOR="subl --wait" bin/rails credentials:edit
2. 验证并修复--wait参数
测试Sublime的--wait是否正常工作:
EDITOR="subl --wait" touch test.txt && echo "编辑完成后关闭Sublime才会显示此行"
如果命令立即输出内容,说明--wait无效,尝试用短参数-w替代:
EDITOR="subl -w" bin/rails credentials:edit
3. 修改全局EDITOR设置(彻底解决)
打开你的Shell配置文件(~/.bashrc或~/.zshrc),查找是否有如下行:
export EDITOR="subl"
- 若想默认使用其他编辑器,修改为对应路径(如
export EDITOR="vim"); - 若想保留临时设置的灵活性,直接注释掉该行。
修改后执行以下命令生效:
source ~/.bashrc # 针对bash用户 # 或 source ~/.zshrc # 针对zsh用户
4. 指定编辑器绝对路径
若环境变量解析有问题,直接使用编辑器的绝对路径:
# 使用Sublime EDITOR="/usr/local/bin/subl --wait" bin/rails credentials:edit # 使用Vim EDITOR="/usr/bin/vim" bin/rails credentials:edit
5. 清理Rails临时缓存
如果Rails缓存了编辑器设置,尝试删除临时目录:
rm -rf tmp/
然后重新执行编辑命令。
内容的提问来源于stack exchange,提问作者user3574603
相关产品推荐
相关产品推荐

