Compiler ruby script en fichier exe?

Est-il possible de compiler un script ruby dans une .exe sur Windows? J'ai cherché partout et j'ai essayé le suivant (Il a regardé comme RubyScript2EXE, les Chaussures et la Caisse tout semblait mort ou abandonné.):

  1. http://ocra.rubyforge.org/
  2. http://exerb.sourceforge.jp/index.en.html

Je suis en utilisant Ruby 1.8.7 sur Windows 7 Ultimate (64 bits.) à partir d'un système propre, je fais ceci:

  1. Installer RubyInstaller 1.8.7-p358 de rubyinstaller.org
  2. gem install watir
  3. gem install ocra
  4. git clone git://github.com/snaury/exerb-mingw.git
  5. cd exerb-mingw
  6. ruby setup.rb

J'ai un script assez simple qui ne ce:

require 'rubygems'
require 'watir'
browser = Watir::Browser.new
browser.goto 'http://slashdot.org'

Quand je lance Ocra je ne reçois pas tous les messages d'erreur et rien ne se passe:

ocra --output test.exe test.rb
=== Loading script to check dependencies

Exerb semble être une meilleure solution, car il compile à la rbc, et il en fait de faire quelque chose:

ruby -r exerb/mkexy test.rb
# Window pops up and after I close it it writes out test.exy
C:\Users\jonathan\dev\Citation>exerb test.exy
C:/Ruby187/lib/ruby/site_ruby/1.8/exerb/recipe.rb:146:in `add_file_entry': test.
exy: no such file -- C:/Ruby187/lib/ruby/gems/1.8/gems/win32-api-1.4.8-x86-mingw32/lib/win32/ruby18/win32/api.so (RuntimeError)
    from C:/Ruby187/lib/ruby/site_ruby/1.8/exerb/recipe.rb:86:in `create_archive'
    from C:/Ruby187/lib/ruby/site_ruby/1.8/exerb/recipe.rb:85:in `each'
    from C:/Ruby187/lib/ruby/site_ruby/1.8/exerb/recipe.rb:85:in `create_archive'
    from C:/Ruby187/bin/exerb.bat:67:in `main'
    from C:/Ruby187/bin/exerb.bat:196

Donc il ne peut pas trouver win32/api.. Quand je regarde dans C:/Ruby187/lib/ruby/site_ruby/1.8/exerb/recipe.rb il semble comme des pierres précieuses ne sont pas dans le chemin de recherche:

DIR: C:/Users/jonathan/dev/Citation
DIR: C:/Ruby187/lib/ruby/site_ruby/1.8
DIR: C:/Ruby187/lib/ruby/site_ruby/1.8/i386-msvcrt
DIR: C:/Ruby187/lib/ruby/site_ruby
DIR: C:/Ruby187/lib/ruby/vendor_ruby/1.8
DIR: C:/Ruby187/lib/ruby/vendor_ruby/1.8/i386-msvcrt
DIR: C:/Ruby187/lib/ruby/vendor_ruby
DIR: C:/Ruby187/lib/ruby/1.8
DIR: C:/Ruby187/lib/ruby/1.8/i386-mingw32
DIR: .

Donc après creuser autour, j'ai trouvé, vous pouvez ajouter des chemins de recherche dans le exy fichier comme ceci:

path:
  - C:/Ruby187/lib/ruby/gems/
  - C:/Ruby187/lib/ruby/gems/1.8
  - C:/Ruby187/lib/ruby/gems/1.8/gems

Après cela, il ne le montrent ces chemins dans search_path, mais il me donne toujours la même erreur. Évidemment, il doit y avoir un moyen d'obtenir rubygems chemins pour être inclus dans le exy?

Alors, comment quelqu'un de construire un .exe sur Windows ces jours-ci?

J'ai fait quelques progrès avec Exerb, j'ai découvert que vous pouvez exécuter mkexy avec l'-rrubygems option de ce pull. Et cela fonctionne très bien pour la plupart des rubis projets. Je l'ai essayé pendant quelques scripts ruby qui utilisent un certain nombre de différentes bibliothèques sans problèmes. Par exemple:

mkexy -rrubygems test.rb
exerb test.exy
test.exe === WORKS!

Malheureusement, il ne fonctionne pas pour watir. Quand je lance une .exe construit avec watir je reçois le texte suivant:

s4t-utils/claims.rb:24:in `user_is_bewildered': Error in the default values: :br

owser la valeur doit être l'un des 'safari', 'firefox', ou "ie", et " n'a pas l'air de r
vol. (StandardError)

Peut-être vous pouvez essayer ceci: johnallen.us/?p=278
Avez-vous vu une console engendré par Ocra? Si vous avez compilé un .rb au lieu d'un .rbw vous devriez avoir vu un seul.
En fait je n'ai rien vu, pas de fenêtre, rien. Peut-être qu'il a sauté le message d'erreur mentionné dans la johnallen.nous lien et puis il est mort? Je vais expérimenter davantage avec ocra demain et mise à jour de cette question.
Mise à jour rapide: j'ai essayé ocra pour 1.9.3, pas de chance. Aussi, il semble comme il se passe des choses bizarres avec elle. Comme, par exemple, j'ai changé le code pour charger "google.com" et il est encore ouvert, c'est à dire avec de Slashdot.
J'ai fait quelques progrès avec Exerb, cette page (en Japonais) ([lien]up-cat.net/?page=wxRuby%20%2B%20Exerb%202009[/lien]) mentionne l'utilisation de -rrubygems comme une option pour mkexy. J'ai essayé et ça fonctionne très bien! Il a généré l' .exe fichier de l'amende juste. Cependant, lorsque j'essaie de le lancer, j'obtiens l'erreur: s4t-utils/claims.rb:24:in user_is_bewildered': Erreur dans les valeurs par défaut: :br owser la valeur doit être l'un des 'safari', 'firefox', ou "ie", et " n'a pas l'air de r vol. (StandardError)`

OriginalL'auteur Jonathan Jeffus | 2012-04-03

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *