This repository was archived by the owner on May 21, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathREADME
More file actions
33 lines (23 loc) · 1.55 KB
/
README
File metadata and controls
33 lines (23 loc) · 1.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Original Code: http://www.erikveen.dds.nl/rubyscript2exe
Introduction
===
Ruby is an interpreted language, which requires (suprise) an interpreter to execute scripts.
Erik Veenstra <rubyscript2exe@erikveen.dds.nl> created this tool to bundle ruby, dependencies and your script into a platform specific executable.
Since his last update, changes within Ruby have broken rubyscript2exe (certainly 1.8.6 patchlevel 287, 1.8.7 patchlevel 72). The problem lies in the way rubyscript2exe modifies the $0 commandline parameter; now a frozen string.
See http://rha7dotcom.blogspot.com/2008/09/rubyscript2exerb-and-623-cant-modify.html for an explaination of the fix.
The fix is broke
===
However, I've seen this doesn't work for everyone. Here's why:
$0 contains the name of the executed script. For example 'cool_ruby_tool.rb'. It has n bytes allocated to it, where n == 'cool_ruby_tool.rb'.size + x. I'm not sure what x contains or is for, but in my case, x == 23.
When rubyscript2exe.rb calls $0.replace(), the allocation is increased as neccessary. However, the fix does not increase the allocated bytes, so the new path specified may be truncated.
Another way
===
So the complete fix is to assign the new value to a string, then alias that string to $0:
$_0 = File.expand_path("./init.rb")
alias $__0 $0
alias $0 $_0
Credits
===
All props go to Erik Veenstra for creating this excellent tool; many forum and ruby-talk users for posting / reposting the first fix.
If this doesn't work for you, that's my fault, and we'll have to think again...
James Cowlishaw.