Ruby Wrapper错误“require:找不到错误命令”

时间:2014-05-07 09:45:35

标签: ruby

我读过其他关于"要求错误的帖子"但我觉得它有所不同,所以我在另一个主题中问你。 我使用环境有限的软件在ruby中创建了一个脚本,所以我尝试了不同的方法来执行它:

首先尝试:

我把绝对路径放到了ruby:

#!/usr/local/rvm/rubies/ruby-2.1.1/bin/ruby

但这会给出错误:

"/usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:51:in `require': cannot load such file -- mail (LoadError)\n\tfrom /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:51:in `require'\n\tfrom /opt/script/script.rb:6:in `<main>'\n"

第二次尝试:

我创建了一个包装器并将绝对路径放到ruby包装器中:

#!/usr/local/rvm/wrappers/ruby-2.1.1@script/ruby

Centos6中的那个在Centos5(Elastix)中工作时给出了错误:

"/opt/script/script.rb: line 4: require: command not found\n/opt/script/script.rb: line 14: syntax error near unexpected token `('\n/opt/script/script.rb: line 14: `def logger(message)'\n"

错误在哪里?我用这种方式创建了一个包装器:

rvm gemset create script
rvm gemset use script
gem install mail

感谢您的帮助。 附:在完整的环境shell中,脚本在机器(Centos 5和6)中工作,所以我认为我可以排除脚本问题

1 个答案:

答案 0 :(得分:0)

我理解我的问题所以我在这里写了一个解决方案。 这个问题与Ruby没有关系,但与Linux有关,线索是在shebang行的字符@中没有被解释,因此脚本被执行为bash文件。 我试图找到一种方法来逃避这个角色,而不是在启动字符串中写入解释器的完整路径。 在Centos 5中,Centos 6中存在这种限制。