2017-02-15 2 views
-3

Nicht ganz neu zu Rubin, aber kaum kompetent. Mein Ziel ist es, eine ähnliche Bedingung zu Ruby einzurichten, wie ich mit Tcl, laufende Skripte, die die Sprache Download und Installation nicht benötigen. Dies ist ziemlich gut mit der Tool Command Language (Tcl) über die Tcl3dsh-Win32-0.5.0 Starpack, läuft fast jede Tcl-Anwendung sehr gut, ohne die Notwendigkeit für vorherige Tcl-Installation auf der sagen wir einfach Windows10 Ich vermute. Nun, warum wollte ich die Ruby1.8.6, für die OpenGL und Glut Bibliothek Fähigkeiten ich glaube, es war, und vielleicht verwiesen von einigen Link irgendwo in Bezug auf die 'Rubyscript2exe' Interpreter-Bundler-Compiler? zu arbeiten. Es ist mein Verständnis, dass Rubyscript2exe für die neueren Ruby-Installationen veraltet ist. Ich habe es nie geschafft, gebündeltes Ding zu erstellen und auszuführen. Also habe ich versucht, die 'Ocra', dies habe ich nur eine einzige Exe erstellen von: setzt 'Hello Ocra Ruby.' Schlaf 4.5 , die eine nette kleine Stand-alone-Ruby-ausführbare Anwendung erstellt, die in der Tat ausgeführt wurde, wenn in das Windows10-System ohne jegliche Ruby-Installationen exportiert. Das war, wo es endete, zu der Zeit auf der Entwicklungsmaschine, wo ich die Ruby ausführbare Anwendungen wie ich installiert hatte installiert die Version 'ruby193' VIA Ein-Klick-Installer ausführbare Auswahl aller Optionen und Verknüpfungen mit der TK enthalten überprüft . Es installiert sich in meinem C: root in Verzeichnis 'Ruby193', wo die Batch-Dateien und andere Dateien der 'Ocra' Edelstein (und die 'Rubyscript2exe') jetzt residieren. Ocra ausführbare Ruby-Anwendungen, die eine funktionierte und die anderen, die nicht ausgeführt wurden vom Desktop über eine Befehlszeile Konsole mit einem 'Start' Befehl erstellt schrieb in einem .bat-Datei, das ist, wie ich meine getan habe Befehlszeilen-Sachen. Die 'Hallo Welt' .rb hat funktioniert, aber alles mit dem tk warf das: 'Tk85.dll fehlt nicht gefunden Fehler'. Ziemlich positiv, das war der Fehler, waren nicht so wissenschaftlich wie ich Notizen über jedes Detail des Abenteuers machen sollte. Also probierte das 'rubyscript2exe' Juwel kein Glück, referenzierte den Ratschlag 'Benutze es mit der ruby186 Version'. Ich habe nicht gesehen, meine OpenGL Ruby-Anwendungen in einer Weile läuft so was-the-hey. Ich habe den ruby186 über die des bestehenden Ruby193 über die ruby186 Installer-Datei mit einem Klick heruntergeladen. Es baute sich in der Wurzel neben das 'Ruby193' Verzeichnis in einem Verzeichnis nur 'Ruby' gekennzeichnet, während der Installation, die es keine Tk-Installation Assoziationen oder Bindungen hatte. Ich sage mir, dass das nicht funktionieren wird, oder? Ich erinnere mich an die "rubyscript2exe" -Anwendung mit Tk spezifischen Kompilieranleitungen, in der Dokumentation, die ich folgte (die für mich nicht funktionierte). Ich habe die Ocra-Dokumentation noch einmal überflogen, ich sehe keinen Bezug zu Tk-spezifisch. Vielleicht in der Hinzufügen von Bibliotheken und ich vermisse es, wie ich sagte, ich bin bei all dem kaum tüchtig, aber wirklich versuchen Sie es hart.Run Rubyscript ohne Rubin Installation

meine Frage: Wie soll ich mit dem Ziel fortfahren, ein Ruby ausführbares Programm zu erstellen, das auf einem Windows-10-ish-System läuft, das die Tk-GUI ausführen kann (ich werde mit der Tk-GUI beginnen, wenn Ich bekomme das auf und läuft Ich kann dann zum Erlernen der OpenGL GLUT Shader Zeug weiter). Tk sollte aktuell sein, also stelle ich mir vor mein Fokus wäre das Ocra Juwel zu bekommen, mit Tk zu arbeiten, habe ich auch den compile-like Befehl, in meinem start.bat Konsole, wie in Ocra Dokumentationsanweisungen: https://github.com/larsch/ocra und http://ocra.rubyforge.org/ ocra whateverscript.rb und mit Varianten ähnlich, wie es bei der Verwendung der 'rubyscript2exe' + '-ocra - tk' getan wurde denke ich, IDDA wissen, was ich getan habe, hat sich aufgeregt. Irgendwelche Gedanken?

Dies ist meine allererste Frage geschrieben, verzeihen Sie bitte meine Unerfahrenheit und die ausführliche Natur davon in meinem Versuch, gründlich zu sein.

+2

Ich habe schwindlig auf diese Frage suchen. Kannst du das auf eine kleinere Frage mit tatsächlichem Code herunterkochen? – tadman

+0

der Code: Ocra whateverscript.rb, gibt es meinen Kompiliercode, was willst du, eine ganze Funktion Ruby Tk-Skript? Ich glaube nicht, dass das für meine Frage relevant wäre. –

+0

Wenn Sie auf Stack Overflow fragen, dann ist der Code * immer * relevant für Ihre Frage oder es wäre überhaupt kein geeignetes Forum für Ihre Frage. – tadman

Antwort

1

Es hört sich so an, als ob Ihre Probleme von der Tatsache herrühren, dass Sie mehrere Versionen von Ruby auf demselben System ohne Versionsmanager verwenden. Wenn mehrere Versionen von Ruby auf demselben System leben, können ihre Edelsteine ​​und Abhängigkeiten kreuz und quer laufen und schreckliche Probleme verursachen.

Unter Windows habe ich mit Uru viel Glück hatte: https://bitbucket.org/jonforums/uru

Auch Sie können Edelsteine ​​zu prüfen, die Installation des Bündels gem verwenden, die sie verkapselt für bestimmte Projekte und spezifische rubin Versionen halten.

Das alles gesagt ist, wenn Sie Ihre Skripte als eine in sich geschlossene ausführbare ausführen zu wollen, aber mit Abhängigkeiten und Rubin Versionen Schwierigkeiten haben, überprüfen Reisen Rubin:

http://phusion.github.io/traveling-ruby/

Es funktioniert Sehr ähnlich wie bei einem Starpack, da alle Ihre Skripte mit der richtigen Version von Ruby versehen sind, so dass Benutzer nichts installieren müssen und Sie nicht mit der Kompilierung oder der Installation von Ruby auf Ihrem eigenen System ringen müssen.

+0

ich danke euch allen sehr, ich werde die Bibliotheken von der ruby-exe-Baumaschine zurücknehmen, einige dieser Dinge ausprobieren und euch dann alle wissen lassen, wie es sich entwickelt. Nochmals, vielen Dank. –

+0

Ich entschuldige mich für die späte Antwort, verlor meine RubyScript.exe Erstellungsumgebung. Jetzt neu auf Toshiba, 64-Bit, Windows10 Pro. Mit Ruby: Ruby 2.3.3p222 (2016-11-21 Revision 56859) [i386-mingw32] Ich habe diese nicht-Tk Konsole Anwendung Skript mit Ocra zu bauen: –

0

Ich entschuldige mich für die späte Antwort, verlor meine RubyScript.exe Erstellungsumgebung. Jetzt neu auf Toshiba, 64-Bit, Windows10 Pro. Ruby-Anwendung: Rubin 2.3.3p222 (2016.11.21 Revision 56859) [i386-mingw32] Ich habe dies nicht-Tk-Konsolenanwendung mit ocra zu bauen:

enter code here 
irb 

mit dem Befehl:

enter code here 
ocra throwRUBYconsole.rb 

in der 'start'.bat Form eines Windows-Terminals, auf dem Desktop, Es funktioniert natürlich nicht auf meinem nicht-Ruby-Umgebung Maschine (selbe Win 10 Setup auf einem Gateway). Lesen Sie Ocra Dokumentation, Ocra Quelle. Reisender Rubin lesen, gleich. Habe (meine Liste verloren wird versuchen, sich zu erinnern) Darb, rubyscript2exe, exerb durchzugehen, wird dies ein wenig dauern.

Hier ist meine Tk Testanwendung:

enter code here 
require 'tk' 
require 'tkextlib/tile' 

root = TkRoot.new {title "Lightyears to Parsecs"} 
content = Tk::Tile::Frame.new(root) {padding "3 3 12 12"}.grid(:sticky =>  'nsew') 
TkGrid.columnconfigure root, 0, :weight => 1; TkGrid.rowconfigure root, 0, :weight => 1 

$lightyears = TkVariable.new; $parsecs = TkVariable.new 
f = Tk::Tile::Entry.new(content) {width 13; textvariable $lightyears}.grid( :column => 2, :row => 1, :sticky => 'we') 
Tk::Tile::Label.new(content) {textvariable $parsecs}.grid(:column => 2, :row => 2, :sticky => 'we'); 
Tk::Tile::Button.new(content) {text 'Calculate'; command {calculate}}.grid( :column => 3, :row => 3, :sticky => 'w') 

Tk::Tile::Label.new(content) {text 'lightyears'}.grid(:column => 3, :row => 1, :sticky => 'w') 
Tk::Tile::Label.new(content) {text 'is equivalent to'}.grid(:column => 1, :row => 2, :sticky => 'e') 
Tk::Tile::Label.new(content) {text 'parsecs'}.grid(:column => 3, :row => 2, :sticky => 'w') 

TkWinfo.children(content).each {|w| TkGrid.configure w, :padx => 5, :pady => 5} 
f.focus 
root.bind("Return") {calculate} 

def calculate 
    begin 
    $parsecs.value = (0.30659458*$lightyears*10000.0).round()/10000.0 
    rescue 
    $parsecs.value = '' 
    end 
end 

Tk.mainloop