Заставить SublimeREPL использовать конкретную версию Ruby

1

Я установил SublimeREPL для использования с Ruby. Он пытается запустить код на Ruby 1.8.7, и я хотел бы, чтобы он работал на 1.9.3, а позже и на других версиях Ruby. Я не уверен, откуда оно наследует окружающую среду. В настоящее время мой ПУТЬ это:

/home/user/.gem/ruby/1.9.3/bin
/home/user/.rubies/ruby-1.9.3-p547/lib/ruby/gems/1.9.1/bin
/home/user/.rubies/ruby-1.9.3-p547/bin
/home/user/.rvm/gems/ruby-1.8.7-p334@global/bin
/home/user/.rvm/rubies/ruby-1.8.7-p334/bin
/usr/lib64/qt-3.3/bin
/usr/local/bin
/usr/bin
/bin
/usr/local/sbin
/usr/sbin
/sbin
/home/user/bin
/home/user/bin
/home/user/.rvm/bin

(отформатирован для удобства чтения)
Я добавил следующее на страницу настроек для SublimeREPL:

{
    "default_extend_env": {"PATH": "/home/user/.rubies/ruby-1.9.3-p547/bin/ruby:{PATH}"}
}

(так же, как и попытка обратного, "{PATH}: / home ...").
Попытка запустить repl приводит к ошибке:

/home/joe/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/site_ruby/1.8/rubygems/dependency.rb:296 ... (unimportant error)

Очевидно, что он не использует ruby ​​1.9.3. Как мне это изменить?

Девон Парсонс
источник

Ответы:

1

Во-первых, вы PATHдолжны содержать только каталоги, а не конкретные файлы, поэтому "default_extend_env"значение должно быть /home/user/.rubies/ruby-1.9.3-p547/bin. Тем не менее, есть способ создать пункт меню для запуска PRY с rubyдвоичным файлом в этом каталоге. Откройте Packages/Userкаталог, выбрав Preferences -> Browse Packages..., затем войдя в Userкаталог. Как только там, создайте следующую структуру каталогов: SublimeREPL/config/Ruby. Затем в Sublime создайте новый файл JSON со следующим содержимым:

[
  {
    "id":"tools",
    "children":[
      {
        "caption":"SublimeREPL",
        "mnemonic":"r",
        "id":"SublimeREPL",
        "children":[
          {
            "caption":"Ruby 1.9.3",
            "children":[
              {
                "command":"repl_open",
                "caption":"Ruby",
                "id":"repl_ruby",
                "mnemonic":"r",
                "args":{
                  "type":"subprocess",
                  "external_id":"ruby",
                  "encoding":"utf8",
                  "cmd":{
                    "linux":[
                      "/home/user/.rubies/ruby-1.9.3-p547/bin/ruby",
                      "${packages}/SublimeREPL/config/Ruby/pry_repl.rb",
                      "$editor"
                    ]
                  },
                  "soft_quit":"\nexit\n",
                  "cwd":"$file_path",
                  "cmd_postfix":"\n",
                  "autocomplete_server": true,
                  "syntax":"Packages/Ruby/Ruby.tmLanguage"
                }
              }
            ]
          }
        ]
      }
    ]
  }
]

и сохранить его как Packages/User/SublimeREPL/config/Ruby/Main.sublime-menu. Теперь, если вы идете Tools -> SublimeREPL -> Rubyтуда, должна быть Ruby 1.9.3опция меню, которую вы можете использовать.

MattDMo
источник
Большое спасибо, это сработало для меня. Теперь, однако, он не может найти pry, даже если он установлен для 1.9.3. Похоже, проблема в том gem env, что мой ruby ​​exec - 1.9.3, но исполняемый каталог, каталог установки и, что самое важное, пути к гемам - 1.8.7
Девон Парсонс,
@DevonParsons попробуйте добавить все ваши пути Ruby 1.9.3 из вашей PATHпеременной в "default_extend_env"переменную. Если вам интересно, посмотрите на Packages/SublimeREPL/config/Ruby/pry_repl.rbто, что требуется.
MattDMo