Заставить 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опция меню, которую вы можете использовать.


Большое спасибо, это сработало для меня. Теперь, однако, он не может найти 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.