我经常在vim中使用:x命令来加密计算机上的文件。最近我想在ruby中对这些文件进行一些处理。
我有一个在env vars中拥有所有“秘密”的应用程序。我的想法实际上是只有一个秘密'密码'env var。我正在考虑为这个和未来的应用程序设置一个方法,我只有一个加密文件,我可以使用所有敏感数据保存在源代码管理中,然后只需要维护一个env var。不确定这是多么可行。
有没有办法用红宝石阅读它们,甚至可以保存它们?
我目前的想法是以某种方式直接从ruby调用vi,在命令中传递密码,并以某种方式获取输出。我不知道这是否可能,而且我很难发现是否可以。
由于
答案 0 :(得分:1)
我没有ruby的专业知识,但是,如果你不介意以纯文本形式公开密码,你可以让Vim将文件内容写入stdout:
$ vim -Nesc 'set key=some\ passphrase | e foo.txt | %p | q!'
foo bar
如果设置了密码,Vim将使用key
作为密码,否则提示。因此,您可以设置key
,然后打开文件,然后打印全部(%p
),然后退出。我在silent ex-mode (-e -s
)中运行它,兼容性已关闭(-N
)。
您可以使用Getting output of system() calls in Ruby或Running a command from Ruby displaying and capturing the output来处理Ruby部分。前者的第二个答案也许可以与存储在变量中的密码一起使用。
您可以将其改编为环境变量:
$ pass='some password' vim -Nesc 'let &key = $pass | e foo.txt | %p | wq!'
foo bar