找到在shebang中使用哪个ruby的可靠方法

找到在shebang中使用哪个ruby的可靠方法,ruby,gem,rvm,shebang,Ruby,Gem,Rvm,Shebang,我写了一个脚本todo.rb,它的第一行是#/usr/bin/env ruby。但是,运行此脚本会出现以下错误: λ ~/ ruby todo/todo.rb /Users/xjia/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- highline/import (LoadError) from

我写了一个脚本
todo.rb
,它的第一行是
#/usr/bin/env ruby
。但是,运行此脚本会出现以下错误:

λ ~/ ruby todo/todo.rb 
/Users/xjia/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- highline/import (LoadError)
    from /Users/xjia/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from todo/todo.rb:6:in `<main>'
我可以在
irb
要求它:

λ ~/ which irb
/Users/xjia/.rvm/rubies/ruby-1.9.3-p0/bin/irb
λ ~/ irb
irb(main):001:0> require 'highline/import'
=> true
但是,
ruby
中的
require
失败的原因完全相同:

λ ~/ which ruby
ruby: aliased to bundled_ruby
λ ~/ ruby -v
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0]
λ ~/ ruby -e "require 'highline/import'"
/Users/xjia/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- highline/import (LoadError)
    from /Users/xjia/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from -e:1:in `<main>'
λ~/哪个红宝石
ruby:别名为bundled_ruby
λ~/ruby-v
ruby 1.9.3p0(2011-10-30修订版33570)[x86_64-darwin11.2.0]
λ~/ruby-e“需要‘高端/进口’”
/Users/xjia/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site\u ruby/1.9.1/rubygems/custom\u require.rb:36:在“require”中:无法加载此类文件--高端/导入(LoadError)
from/Users/xjia/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site\u ruby/1.9.1/rubygems/custom\u require.rb:36:in'require'
from-e:1:in`'
我在Ubuntu和MacOSX下都使用。从我的Ubuntu盒中,这个shebang行运行良好。但是,它在OS X下很糟糕。那么找到可用的ruby的可靠方法是什么呢?

问题在于:

λ~/哪个ruby
ruby:别名为bundled\u ruby

您需要检查:

which bundled_ruby
并确保它也有适当的shebang:

#!/usr/bin/env ruby

最后,删除ruby的别名应该可以解决问题,您可能需要检查默认随RVM安装的my gem
rubygems bundler
——它提供了更“智能”的检测和使用bundler的方法。

您运行的是哪个版本的OSX?@ply 10.7.5(它是Macbook Air)有几次我遇到这样或类似的错误,都是因为脚本不可执行。你试过chmod+xtodo.rb了吗?这显然不是你的shebang的问题(调试ruby shebang的一个简单方法是运行
!/usr/bin/env ruby;放置ruby\u版本
)。这是一个宝石问题。请附上
gem-environment
@ply的输出当然,我可以在Ubuntu下使用它。
哪个bundled\u-ruby
显示
bundled\u-ruby(){u run-with-bundler-ruby$@
。不确定是否正常?
哪个bundle
显示
/Users/xjia/.rvm/gems/ruby-1.9.3-p0/bin/bundle
不正常,您需要
哪个bundler运行
。。。它是
\u run-with-bundler(){如果bundler-installed&&u in-bundle-project,那么bundle exec$@else$@fi}
所以我运行了
哪个bundle
只需删除别名,它正在运行
ruby bundle exec ruby…
这是双慢的
#!/usr/bin/env ruby