这是在Debian机器上发生的事情
$ ruby -e 'puts "something"'
something
$
这就是我的预期。
然而,当我在Mac上运行相同的操作系统(OS X 10.7.3)时,我得到了
1.9.3-p125-perf $ ruby -e "puts 'something'"
1.9.3-p125-perf $ ruby -e "print 'something'"
1.9.3-p125-perf $ rbenv shell 1.8.7-p358
1.8.7-p358 $ ruby -e "puts 'something'"
1.8.7-p358 $ ruby -e "print 'something'"
nil1.8.7-p358 $ rbenv shell system
system $ ruby -e "puts 'something'"
system $ ruby -e "print 'something'"
nilsystem $
有谁知道这里发生了什么,以及我如何让ruby再次输出有意义的东西?
我的Ruby版本:
1.9.3-p125-perf:ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.3.0]
1.8.7-p358:ruby 1.8.7 (2012-02-08 patchlevel 358) [i686-darwin11.3.0]
系统:ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0]
脚本或IRB工作正常,管道红宝石也有效:
1.9.3-p125-perf $ cat | ruby
puts "foo"
^D
foo
只是表现出时髦的ruby -e
。
这也发生在我的女朋友Mac上。她使用RVM。
答案 0 :(得分:0)
我找到了罪魁祸首。我使用的是旧版bundler-exec。
bundler-exec
为预定义的命令列表创建shell别名,并将它们包装在此函数中:
run-with-bundler()
{
if bundler-installed && within-bundled-project; then
bundle exec "$@"
else
"$@"
fi
}
我的版本错过了$@
周围的引号,这引起了红宝石的行为不端。