1

Windowsのcygwinで実行されているemacsでfastri(http://eigenclass.org/hiki/fastri)をセットアップしようとしています。ruby のインストールも、windows 版の ruby​​ ではなく、cygwin からのものです。tarball をダウンロードして展開し、setup.rb を実行した後、qri または fri を実行しようとすると、次のエラー メッセージが表示されます。

    [/cygdrive/g]$qri
/usr/lib/ruby/1.8/rdoc/ri/ri_paths.rb:63: uninitialized constant Gem::Version (NameError)
    from /usr/lib/ruby/1.8/rdoc/ri/ri_paths.rb:59:in `each'
    from /usr/lib/ruby/1.8/rdoc/ri/ri_paths.rb:59
    from /usr/lib/ruby/site_ruby/1.8/fastri/util.rb:38:in `require'
    from /usr/lib/ruby/site_ruby/1.8/fastri/util.rb:38
    from /usr/bin/qri:6:in `require'
    from /usr/bin/qri:6

私のルビーバージョンと宝石環境:

[/cygdrive/g]$ruby --version
ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin]
[/cygdrive/g]$gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.4
  - RUBY VERSION: 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin]
  - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /usr/bin/ruby.exe
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-cygwin
  - GEM PATHS:
     - /usr/lib/ruby/gems/1.8
     - /home/rrajagop/.gem/ruby/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://gems.rubyforge.org/

ri_paths.rb を調べて、Gem::Version をファイルに含める方法を調べましたが、わかりませんでした。と の両方require 'gem/version'require 'version'ri_paths.rb に追加しようとしましたが、喜びはありませんでした。私は得る 'require': no such file to load -- version (LoadError)

4

1 に答える 1

1

わかりました、ようやく機能しました。require 'rubygems/version'ri_path.rbを追加すると修正されました。

基本的には、puts $:require が検索するパスを見つけ出し、Gem::Version定義されている場所を見つけ (Ruby とすべての gem 用に事前に作成されたタグ テーブルを既に持っていたので、これは簡単でした)、バージョンへのパスを計算しました。検索パスの最も近いコンポーネントから。シンプルですね。もちろん、これには数日かかりました。私はルビー初心者です。

于 2010-10-30T10:10:45.447 に答える