Erzwinge, dass SublimeREPL eine bestimmte Version von Ruby verwendet

1

Ich habe SublimeREPL für die Verwendung mit Ruby installiert . Es wird versucht, Code unter Ruby 1.8.7 auszuführen, und ich möchte, dass er unter 1.9.3 und späteren Versionen von Ruby ausgeführt wird. Ich bin nicht sicher, woher es die Umgebung erbt. Derzeit ist mein PFAD:

/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

(
Zur besseren Lesbarkeit formatiert) Ich habe der Einstellungsseite für SublimeREPL Folgendes hinzugefügt:

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

(sowie den umgekehrten Versuch, "{PATH}: / home ...").
Der Versuch, die Replikation auszuführen, führt zu einem Fehler:

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

Klar, dass Ruby 1.9.3 nicht verwendet wird. Wie ändere ich das?

Devon Parsons
quelle

Antworten:

1

Zunächst PATHsollten Sie nur Verzeichnisse und keine bestimmten Dateien enthalten, daher sollte der "default_extend_env"Wert so sein /home/user/.rubies/ruby-1.9.3-p547/bin. Es gibt jedoch eine Möglichkeit, eine Menüoption zum Ausführen von PRY mit der rubyBinärdatei in diesem Verzeichnis zu erstellen . Öffnen Sie Ihr Packages/UserVerzeichnis, indem Sie auswählen Preferences -> Browse Packages...und dann das UserVerzeichnis eingeben . Dort angekommen, erstellen Sie die folgende Verzeichnisstruktur: SublimeREPL/config/Ruby. Erstellen Sie als Nächstes in Sublime eine neue JSON-Datei mit dem folgenden Inhalt:

[
  {
    "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"
                }
              }
            ]
          }
        ]
      }
    ]
  }
]

und speichere es als Packages/User/SublimeREPL/config/Ruby/Main.sublime-menu. Wenn Sie jetzt zu gehen, Tools -> SublimeREPL -> Rubysollte es eine Ruby 1.9.3Menüoption geben, die Sie verwenden können.

MattDMo
quelle
Vielen Dank, das hat bei mir funktioniert. Jetzt kann es jedoch keinen Brecher finden, obwohl es für 1.9.3 installiert ist. Sieht aus wie ein Problem mit gem env, es heißt, mein Ruby Exec ist 1.9.3, aber das ausführbare Verzeichnis, das Installationsverzeichnis und vor allem die Juwelenpfade sind alle 1.8.7
Devon Parsons
@ DevonParsons versuchen, alle Ihre Ruby 1.9.3-Pfade von Ihrer PATHVariablen zur "default_extend_env"Variablen hinzuzufügen . Wenn Sie interessiert sind, schauen Sie sich an Packages/SublimeREPL/config/Ruby/pry_repl.rb, was erforderlich ist.
MattDMo