如何将Ruby脚本作为可执行文件执行?

时间:2013-02-06 08:06:37

标签: ruby compilation executable

我想将ruby脚本作为可执行文件执行,我也应该在/ usr / bin /目录下执行。我知道这是可能的。

#!/usr/bin/ruby
puts "hello"

并且

chmod +x hello

但我也想要一些ruby文件。

例如,如果我添加

require './other_ruby_script' 

进入我的代码并将Ruby可执行文件移动到/ usr / bin /,它给出了错误:

无法加载此类文件'other_ruby_script'

我想在/ usr / bin目录下执行Ruby文件。

所以也许我应该编译它?但我无法编译,因为我不明白谷歌搜索“如何编译?”。

如何创建可执行的ruby代码作为我的代码的合适格式。 (要求'./other_file')。而且我不必像这样执行./hello我的可执行文件。我应该执行hello

4 个答案:

答案 0 :(得分:2)

我想你问configure the right loadpath如何。首先,在你的脚本中我会做:

puts $:

这应该打印您是否正在加载正确的Ruby环境(如果您使用rbenv或rvm可能会出现问题)。例如,我得到:

/Users/pmu/.rbenv/versions/1.9.3-p194/lib/ruby/site_ruby/1.9.1
/Users/pmu/.rbenv/versions/1.9.3-p194/lib/ruby/site_ruby/1.9.1/x86_64-darwin11.3.0
/Users/pmu/.rbenv/versions/1.9.3-p194/lib/ruby/site_ruby

只要您的加载路径不包含脚本'other_ruby_script'的目录,您就会收到此错误:

LoadError: cannot load such file -- other_ruby_script

因此,您应该尝试使用以下命令添加加载路径:

$:.unshift "#{File.dirname(__FILE__)}/../some_path"

如果您没有首先加载Ruby环境,那么您的行:

#!/usr/bin/ruby 

需要设置为从Rbenv或Rvm加载环境

答案 1 :(得分:2)

#!/usr/bin/env ruby
require_relative 'other_ruby_script'
puts "hello"

答案 2 :(得分:1)

您可以从执行ruby文件的位置编写shell脚本。 您需要在shell脚本中导出PATH和GEM_HOME。 shell脚本将是这样的:

#!/bin/bash
export PATH = /usr/local/rvm/gems/ruby-1.9.3-p194
export GEM_HOME = /usr/local/rvm/gems/ruby-1.9.3-p194
cd /path/to/ruby_script
ruby file_name.rb

您将通过以下命令获取PATH和GEM_HOME:

echo $PATH
echo $GEM_HOME 

答案 3 :(得分:0)

问题是针对Linux环境,但这个答案可能会帮助Windows用户在将来遇到这种情况。

Ruby提供了一些包装Gems here

最受欢迎的是OCRA(一键式Ruby应用程序),它既可以作为Gem也可以作为独立的Ruby文件使用,并将您的Ruby项目打包成Windows可执行文件。