Có thể biên dịch tập lệnh ruby thành một .exe trên Windows không? Tôi đã tìm kiếm khắp nơi và tôi đã thử những điều sau đây (Nó trông giống như RubyScript2EXE, Giày dép và Crate tất cả dường như đã chết hoặc bị bỏ rơi.):Biên dịch tập lệnh ruby thành exe?
Tôi đang sử dụng của Ruby 1.8.7 trên Windows 7 Ultimate (64bit.) từ một hệ thống sạch tôi làm điều này:
- Install RubyInstaller 1.8.7-p358 từ rubyinstaller.org
- gem install watir
- gem install ocra
- git clone git: //github.com/snaury/exerb-mingw.git
- cd exerb-mingw
- ruby setup.rb
tôi có một kịch bản khá đơn giản mà thực hiện điều này:
require 'rubygems'
require 'watir'
browser = Watir::Browser.new
browser.goto 'http://slashdot.org'
Khi tôi chạy Ocra tôi không nhận được bất kỳ thông báo lỗi, và không có gì xảy ra:
ocra --output test.exe test.rb
=== Loading script to check dependencies
Exerb có vẻ như một giải pháp tốt hơn vì nó biên dịch để RBC, và nó thực sự làm điều gì đó:
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
Vì vậy, nó không thể tìm thấy win32/api.so. Khi tôi nhìn vào C: /Ruby187/lib/ruby/site_ruby/1.8/exerb/recipe.rb nó trông giống như viên ngọc không nằm trong đường dẫn tìm kiếm:
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: .
Vì vậy, sau khi đào bới xung quanh tôi phát hiện ra bạn có thể thêm đường dẫn tìm kiếm trong tệp exy như vậy:
path:
- C:/Ruby187/lib/ruby/gems/
- C:/Ruby187/lib/ruby/gems/1.8
- C:/Ruby187/lib/ruby/gems/1.8/gems
Sau khi nó hiển thị những đường dẫn này trong search_path, nhưng nó vẫn cho tôi lỗi tương tự. Rõ ràng phải có một số cách để có được con đường rubygems được bao gồm trong exy?
Vì vậy, làm thế nào để ai đó xây dựng một .exe trên Windows những ngày này?
Tôi đã thực hiện một số tiến bộ với Exerb, tôi phát hiện ra bạn có thể chạy mkexy với tùy chọn -rrubygems để kéo nó vào. Và điều này làm việc tuyệt vời cho hầu hết các dự án ruby. Tôi đã thử nó cho một vài kịch bản ruby sử dụng một số thư viện khác nhau mà không có vấn đề gì. Ví dụ:
mkexy -rrubygems test.rb
exerb test.exy
test.exe === WORKS!
Thật không may, nó không hoạt động đối với watir. Khi tôi chạy một .exe xây dựng với watir tôi nhận được như sau: Giá trị
s4t-utils/claims.rb:24:in `user_is_bewildered': Error in the default values: :br
owser của phải là một trong 'săn', 'firefox', hoặc 'tức là', và '' không giống r ight .(StandardError)
Có lẽ bạn có thể thử điều này: http://johnallen.us/?p=278 –
Bạn có thấy một giao diện điều khiển sinh ra bởi Ocra? Nếu bạn biên soạn một .rb thay vì một .rbw bạn nên đã nhìn thấy một. –
Tôi thực sự không nhìn thấy bất cứ điều gì, không có cửa sổ, không có gì. Có lẽ nó xuất hiện thông báo lỗi được đề cập trong liên kết johnallen.us và sau đó chết? Tôi sẽ thử nghiệm nhiều hơn với ocra vào ngày mai và cập nhật câu hỏi này. –