通过旅行Ruby将参数传递给Ruby脚本

问题描述:

我试图将命令行参数传递到与Traveling Ruby一起被调用的Ruby脚本,并且无法使其工作。我只是用自己的标准wrapper.sh文件脚本宝石:通过旅行Ruby将参数传递给Ruby脚本

#!/bin/bash 
set -e 

# Figure out where this script is located. 
SELFDIR="`dirname \"$0\"`" 
SELFDIR="`cd \"$SELFDIR\" && pwd`" 

# Tell Bundler where the Gemfile and gems are. 
export BUNDLE_GEMFILE="$SELFDIR/lib/vendor/Gemfile" 
unset BUNDLE_IGNORE_CONFIG 

# Run the actual app using the bundled Ruby interpreter, with Bundler activated. 
exec "$SELFDIR/lib/ruby/bin/ruby" -rbundler/setup "$SELFDIR/lib/app/test.rb" 

当我运行它,我的Ruby脚本没有看到任何命令行参数。我试图改变最后一行:

exec "$SELFDIR/lib/ruby/bin/ruby" -rbundler/setup "$SELFDIR/lib/app/test.rb [email protected]" 

而且我认为他会的工作,但是当我与ARG测试“ARG1”它给我的错误:

/[pathtofile]/test-1.0.0-osx/lib/ruby/bin.real/ruby: No such file or directory -- /[pathtofile]/test-1.0.0-osx/lib/app/test.rb arg1 (LoadError) 

如此看来就像它将命令行参数视为文件名的一部分一样。

有没有办法修改这个脚本来正确传入参数?

谢谢!

显然,我是个白痴。当然,它将参数视为文件名的一部分,因为$ @在引号内。正确修改最后一行以使所有工作正常:

exec "$SELFDIR/lib/ruby/bin/ruby" -rbundler/setup "$SELFDIR/lib/app/test.rb" [email protected]