这个问题取决于我正在做的Ruby项目。VSCode任务通常不能从正确的rbenv
shimmed Ruby版本运行。有时,如果我先从集成终端手动运行一个命令,然后运行Code任务,它会选择正确的Ruby。
示例VSCode任务,
{
"version": "2.0.0",
"tasks": [
{
"label": "Run All Tests",
"type": "shell",
"command": "bin/rails test",
"group": "test",
"presentation": {
"reveal": "always",
"panel": "shared"
}
}
]
}
字符串
当从项目目录中启动代码时(或任何其他方式),如果我运行这个任务,它将从系统ruby的上下文中运行。但是,如果我打开集成终端并输入bin/rails test
(可以工作),然后再次运行该任务,它将在正确的rbenv
shimmed ruby上下文中运行。
然而,在适当的Ruby上下文中启动调试器会话确实可以工作,所以我真的不明白错过了什么。
3条答案
按热度按时间ou6hu8tu1#
这个答案将使任务工作,但它没有解决VS代码的潜在问题。这可能需要在他们的GitHub repo上发布一个问题。
如果你在Mac上,这个命令会在你的路径中放置一个rbenv符号链接,链接到rbenv版本。Rbenv(以及大多数应用程序)只在shell环境中更改路径(.bash_profile只在bash中更改路径)。此命令会将其添加到路径中,而不管您运行的是什么shell。
字符串
我猜测VS Code实际上并没有使用shell环境,而是直接调用可执行文件。
t5fffqht2#
一个选项是将以下配置添加到VSCode
settings.json
中,以使其启动的shell在执行任务之前选择您的shell环境。这里我使用的是zsh
,我的环境配置为选择正确的ruby,然后任务将识别:字符串
dw1jzc5e3#
在Visual Studio Code解决了似乎是一个bug或缺少的配置设置,或者至少是缺少的文档之前,我已经采取了在任务的
command
属性上设置PATH
变量的方法。例如,如果我感兴趣使用的ruby位于
/full/path/to/bin/ruby
,我将/full/path/to/bin
前置到PATH
环境变量。举例来说:
.vscode/tasks.json
字符串