6

我想将我的 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 我的可执行文件。只是我应该像你好一样执行

4

4 回答 4

4
#!/usr/bin/env ruby
require_relative 'other_ruby_script'
puts "hello"
于 2013-11-18T19:23:03.220 回答
2

我想你问如何配置正确的 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 加载环境

于 2013-02-06T09:17:33.103 回答
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 
于 2013-02-06T08:14:15.683 回答
0

问题是针对 linux 环境的,但这个答案可能会对将来偶然发现这个问题的 Windows 用户有所帮助。

这里有一些用于 Ruby 的打包 Gems 。

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

于 2016-01-07T09:54:48.610 回答