0

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>'

私はすでにgemをインストールしましたhighline

λ ~/ which gem
/Users/xjia/.rvm/rubies/ruby-1.9.3-p0/bin/gem
λ ~/ gem install highline
Successfully installed highline-1.6.15
1 gem installed
Installing ri documentation for highline-1.6.15...
Installing RDoc documentation for highline-1.6.15...
λ ~/ gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.10
  - RUBY VERSION: 1.9.3 (2011-10-30 patchlevel 0) [x86_64-darwin11.2.0]
  - INSTALLATION DIRECTORY: /Users/xjia/.rvm/gems/ruby-1.9.3-p0
  - RUBY EXECUTABLE: /Users/xjia/.rvm/rubies/ruby-1.9.3-p0/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/xjia/.rvm/gems/ruby-1.9.3-p0/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-11
  - GEM PATHS:
     - /Users/xjia/.rvm/gems/ruby-1.9.3-p0
     - /Users/xjia/.rvm/gems/ruby-1.9.3-p0@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

そして私はrequireそれをすることができますirb

λ ~/ which irb
/Users/xjia/.rvm/rubies/ruby-1.9.3-p0/bin/irb
λ ~/ irb
irb(main):001:0> require 'highline/import'
=> true

ただし、requireinrubyはまったく同じように失敗します。

λ ~/ 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>'

UbuntuとMacOSXの両方でrvmを使用しています。Ubuntuボックスから、このシバンラインは正常に機能します。しかし、それはOS Xの下ではダメです。では、使用可能なものを見つけるための信頼できる方法は何rubyでしょうか。

4

1 に答える 1

1

問題はここにあります:

λ ~/ which ruby ruby: aliased to bundled_ruby

確認する必要があります:

which bundled_ruby

また、適切なシバンがあることを確認してください。

#!/usr/bin/env ruby

最終的に ruby​​ のエイリアスを削除することで問題が解決するはずです。デフォルトで RVM にインストールされている私の gemrubygems-bundlerを確認してください。バンドラーを検出して使用するためのより「インテリジェントな」手段を提供します。

于 2013-01-04T19:21:38.277 に答える