如何在Windows 10上运行'rails credentials:edit'而不安装Linux子系统

10

我正在尝试在我的Windows 10电脑上的Rails应用程序上运行以下命令:

rails credentials:edit

但是我收到了以下错误信息:

没有可用的 $EDITOR 打开文件。可以像这样指定一个:

EDITOR="mate --wait" bin/rails credentials:edit

对于立即启动并退出的编辑器,重要的是传递等待标志, 否则凭据将立即保存,没有机会进行编辑。

我做了一些研究,了解到大多数希望在 Windows 10 上运行此命令的人都需要在其 Windows 计算机上安装 Linux 子系统。然而,由于我没有管理员权限,因此我无法选择此选项。我尝试使用类似此处的资源安装 Linux 子系统,但没有成功。

10个回答

15

1
谢谢,这是最简洁的解决方案! - Apoorv Chandurkar
谢谢,这对我的Windows 10系统真的很有效,使用的是Ruby on Rails 7和Ruby 3.2.2版本。 - undefined

10

我发现上面提供的所有答案都对我无效。记事本提示目录不正确,给了我一个空文件。

我通过以下步骤让Notepad++正常工作:

SET EDITOR="C:\Program Files\Notepad++\notepad++.exe"
rails credentials:edit

我不需要使用--wait标志。


4
您可以使用以下命令:SET EDITOR="C:/Program Files/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin 来获取一个独立的实例,它不会干扰您常规使用的实例。这是 Git for Windows 使用的相同命令行。 - Daniel Rikowski

3

如果你正在尝试进行Rails开发,我建议你切换到非Windows操作系统,因为我曾经在Windows机器上工作,直到我妥协并完全切换到Mate Linux。在Linux平台上开发Rails应用程序会更加容易,因为几乎所有的gems都可以编译而不会出现任何问题,并且所有的Rails终端命令都可以直接使用。

但是,如果你想编辑你的凭证,你需要在运行credentials:edit之前设置一个文本编辑器(通常是Linux上的vim)。

首先运行SET EDITOR="notepad_path",然后尝试运行rails credentials:edit

你可以将notepad_path更改为任何其他你喜欢的文本编辑器。但是,对于我来说,像Atom这样的一些编辑器会给我带来奇怪的问题。


1
运行命令有效,回答了我的问题,但我没有机会写入它。我知道,在Linux环境中,通常在指定编辑器时会添加“--wait”标志或类似的内容,以便您有机会进行编辑。您是否知道如何使编辑器等待我进行编辑,然后保存? - Mahmoud Mousa Hamad
我没有Windows电脑测试它。但是从我的同事那听来的消息,向Atom添加--wait是有效的。 - CodingSomething

2
  1. 找到你本地文本编辑器的路径(对于Windows来说,它是记事本),可以搜索记事本并右键点击打开文件位置
  2. 右键点击记事本并打开属性,然后复制目标:(例如.("%windir%\system32\notepad.exe"))
  3. 现在将目标粘贴到SET EDITOR="target_path"中
    例如:SET EDITOR="%windir%\system32\notepad.exe"
  4. 现在你可以运行bundle exec rails credentials:edit,记事本应该会显示解密后的信息

这个不起作用。记事本没有打开,但Rails显示:“新凭据已加密并保存”。 - MSC
如果记事本没有在新窗口中打开解密后的信息,请检查您的设置并确保CMD(或您选择的终端)可以访问打开所使用的文本编辑器。此外,请确保没有其他设置阻止此过程。如果您对我的说明有任何疑问,请告诉我,我已尽力清晰地表达了一切,但可能还有更好的解释。 - Jonathan Johnson

1
如果你在Windows环境下,我强烈建议使用经典的记事本。根据我的经验,使用Notepad++时,有时会正确打开但无法保存,而经典的记事本则完美地解决了这个问题。
此外,要运行那些提到的命令,最好使用经典的cmd shell控制台,在PS(Power Shell)控制台中可能无法正常工作。祝好运!

1
No $EDITOR to open file in. Assign one like this:

EDITOR="mate --wait" bin/rails credentials:edit

For editors that fork and exit immediately, it's important to pass a wait flag,
otherwise the credentials will be saved immediately with no chance to edit.

解决方案:
$env:EDITOR="notepad"
rails credentials:edit

0

除了之前的答案,我还需要执行一些步骤。尽管我正在运行Windows 10,但因为我的用户名超过8个字符,我的TMP/TEMP环境变量值会受到一些Windows 95时代的8.3风格目录名称破坏。

换句话说,如果你的用户名是waytoolong,Windows 10会将TMPTEMP设置为以下内容:

TEMP=C:\Users\WAYTOO~1\AppData\Local\Temp\1
TMP=C:\Users\WAYTOO~1\AppData\Local\Temp\1

波浪号(~)真的让rails credentials:edit感到不适。

因此,您需要显式设置TMPTEMP,以及EDITOR,最后调用rails credentials:edit

# Powershell
$env:TEMP="C:\Users\waytoolong\AppData\Local\Temp\1"
$env:TMP="C:\Users\waytoolong\AppData\Local\Temp\1"
$env:EDITOR="code --wait"
rails credentials:edit

另外,您还可以利用LOCALAPPDATA环境变量:

# Powershell
$env:TEMP="$($env:LOCALAPPDATA)\Temp\1"
$env:TMP="$($env:LOCALAPPDATA)\Temp\1"
$env:EDITOR="code --wait"
rails credentials:edit

0

使用PowerShell,已解决问题。

$env:EDITOR="notepad"

那么

bundle exec rails credentials:edit

0

[Windows 8.1]

我正在使用SET EDITOR="C:\Program Files (x86)\Notepad++\notepad++.exe" -multiInst -notabbar -nosession -noPlugin命令来设置编辑器,它可以正常工作。

接下来,只需运行rails credentials:edit命令。然后您就可以编辑credentials.yml文件。保存并关闭Notepad++窗口。然后凭据将自动加密并保存。


0

我正在使用Windows 10,以下是我所采取的步骤:

  1. 确保您的文本编辑器路径已添加到环境变量PATH
    • 为此,请复制文本编辑器的文件位置
    • 右键单击我的电脑(此电脑)> 选择属性 > 高级系统设置 > 环境变量
    • 在系统变量框中,点击“Path”> 点击编辑 > 新建 > 粘贴文本编辑器文件位置
  2. 重新启动命令行,然后尝试使用命令行打开文本编辑器。我正在使用Sublime,输入“subl”将打开Sublime文本编辑器
  3. 进入您的项目文件夹,然后运行以下命令:
set EDITOR=subl --wait
  • 其中subl是文本编辑器的可执行文件
  • 如果不使用双引号或单引号,这也可以正常工作,因为subl是一个可执行文件,并且已在环境变量中注册(如果使用记事本,请使用:notepad)。
  • 如果没有--wait标志,您的credentials.yml.enc将立即保存,而不给您编辑的机会。
  • 或者,您可以直接设置类似于此的EDITOR:
set EDITOR="C:\filepath\to\your\editor --wait"
  • 这次加上引号

    1. 最后运行:
rails credentials:edit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接