我想将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
答案 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)