Mein Ruby-Skript erfordert eine Verbindung zu einem OracleDatenbank. Also muss ich ORACLE_HOME und LD_LIBRARY_PATH korrekt exportieren, bevor das Skript ausgeführt wird. Gibt es eine Möglichkeit, diese env-Variablen ohne Shell-Skript zu exportieren? Ich habe versucht, ENV ["ORACLE_HOME"] = "/ usr / local / oracle_client" in die erste Zeile des Skripts zu setzen, und es funktioniert nicht. Jetzt funktioniert die einzige Möglichkeit, ein Shellskript zu schreiben, in das diese Variablen exportiert und dort ruby ausgeführt werden. Das Shell-Skript sieht folgendermaßen aus:
export ORACLE_HOME = "/ usr / local / oracle_client" export LD_LIBRARY_PATH = "/ usr / local / oracle_client / lib" ruby myscript.rb --options
Es ist irgendwie hässlich, weil der Benutzer in das Internet gehen mussShell-Skript zum Ändern von Optionen. Ich frage mich, ob es einen besseren Weg gibt. Der Benutzer kann dies einfach über die Befehlszeile tun: ruby myscript.rb --options
Antworten:
1 für die Antwort № 1Warum nicht die Ruby-Optionen als Argumente für das Shell-Skript angeben? Z.B.,
#!/bin/bash
export ORACLE_HOME="/usr/local/oracle_client"
export LD_LIBRARY_PATH="/usr/local/oracle_client/lib"
ruby myscript.rb $*
Natürlich möchten Sie vielleicht Argumentationsüberprüfungen usw. hinzufügen, aber dies gibt die Idee.
1 für die Antwort № 2
Warum rufen Sie es nicht an? Kernel.system
?
system("export ORACLE_HOME="/usr/local/oracle_client"")
system("export LD_LIBRARY_PATH="/usr/local/oracle_client/lib"")