Терминальная оболочка кода Visual Studio против оболочки задач отсутствует rvm - PullRequest
0 голосов
/ 23 ноября 2018

Я использую RVM для изменения версий Ruby в моей среде разработки на базе Mac.

Внутри кода Visual Studio, когда я открываю обычную вкладку «Терминал», меня перетаскивают в оболочку входа в bash с -l опция, для стандартной конфигурации по умолчанию и как задокументировано здесь :

// VSCode default settings
{
  "terminal.integrated.shell.osx": "/bin/bash",
  "terminal.integrated.shellArgs.osx": [
    "-l"
  ]
}

Команда RVM, выполняемая вручную из VSCode Terminal, дает мне ожидаемую версию ruby ​​для этого проекта по умолчанию.

$ rvm list
  ruby-2.0.0-p648 [ x86_64 ]
  ruby-2.1.10 [ x86_64 ]
  ruby-2.1.5 [ x86_64 ]
  ruby-2.2.10 [ x86_64 ]
  ruby-2.2.5 [ x86_64 ]
  ruby-2.3.0 [ x86_64 ]
* ruby-2.3.1 [ x86_64 ]
=> ruby-2.3.7 [ x86_64 ]

# => - current
# =* - current && default
#  * - default

Однако, когда я настраиваю файл .vscode/tasks.json для выполнения той же команды, версия Ruby НЕ является правильной версией, а версией по умолчанию в системе.Более того, я не могу фактически использовать rvm use для переключения версий (см. Сообщение об ошибке ниже)

{
  // See https://go.microsoft.com/fwlink/?LinkId=733558
  // for the documentation about the tasks.json format
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Check for RVM",
      "type": "shell",
      "command": "rvm list && rvm use 2.3.7",
      "group": {
        "kind": "test",
        "isDefault": true
      }
    }
  }
}

Вывод выполнения задачи с сообщением об ошибке о неправильной оболочке входа в систему.

> Executing task: rvm list && rvm use 2.3.7 <

  ruby-2.0.0-p648 [ x86_64 ]
  ruby-2.1.10 [ x86_64 ]
  ruby-2.1.5 [ x86_64 ]
  ruby-2.2.10 [ x86_64 ]
  ruby-2.2.5 [ x86_64 ]
  ruby-2.3.0 [ x86_64 ]
=* ruby-2.3.1 [ x86_64 ]
  ruby-2.3.7 [ x86_64 ]

# => - current
# =* - current && default
#  * - default


RVM is not a function, selecting rubies with 'rvm use ...' will not work.

You need to change your terminal emulator preferences to allow login shell.
Sometimes it is required to use `/bin/bash --login` as the command.
Please visit https://rvm.io/integration/gnome-terminal/ for an example.


Terminal will be reused by tasks, press any key to close it.

Я даже пытался специально добавить параметр команды -l bash в качестве аргумента в конфигурации Задачи, но это не работает.

  "options": {
    "shell": {
      "args": "-l"
    }
  }

Мое понимание, после прочтения эта проблема заключается в том, что конфигурация оболочки терминала и конфигурация оболочки задач - это одно и то же, так есть ли какая-то другая несогласованность между оболочкой терминала и оболочкой задач, которую я пропускаю?Если нет, то что такое в RVM, что мешает ему работать внутри оболочки Task?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...