0

gemを自分のカスタムディレクトリにインストールslimしましたが、「slim」が必要な場合はエラーが発生します。

スリムなインストール:

$ cd /var/www
$ mkdir project
$ cd project/
$ gem install slim -i gems/
Fetching: temple-0.4.0.gem (100%)
Fetching: slim-1.2.2.gem (100%)
Successfully installed temple-0.4.0
Successfully installed slim-1.2.2
2 gems installed
Installing ri documentation for temple-0.4.0...
Installing ri documentation for slim-1.2.2...
Installing RDoc documentation for temple-0.4.0...
Installing RDoc documentation for slim-1.2.2...
$ ls gems/
bin/            doc/            specifications/ 
cache/          gems/           
$ ls gems/gems/
slim-1.2.2  temple-0.4.0
$ ls gems/gems/slim-1.2.2/
benchmarks  CHANGES  lib      Rakefile   slim.gemspec
bin         Gemfile  LICENSE  README.md  test
$ ls gems/gems/slim-1.2.2/lib/
slim  slim.rb

Gem環境(/var/www/project/gemsGEM_PATHに追加したことに気付いた場合):

$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.11
  - RUBY VERSION: 1.9.2 (2010-08-18 patchlevel 0) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/1.9.1
  - RUBY EXECUTABLE: /usr/local/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/local/lib/ruby/gems/1.9.1
     - /home/john/.gem/ruby/1.9.1
     - /var/www/project/gems
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gempath" => ["/usr/local/lib/ruby/gems/1.9.1", "/home/john/.gem/ruby/1.9.1", "/var/www/project/gems"]
  - REMOTE SOURCES:
     - http://rubygems.org/

テスト:

$ irb
irb(main):001:0> require 'slim'
LoadError: no such file to load -- slim
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from (irb):1
    from /usr/local/bin/irb:12:in `<main>'

何が悪いのか分かりますか?/var/www/project/gemsGEM_PATHに追加しましたrequire 'slim'が、gemが読み込まれません。なぜですか?これはrubygemsのバグですか?

とを書き込んだときに同じ問題が発生require 'slim'します。/var/www/project/index.rbruby index.rb

4

2 に答える 2

3

bundlerを使用することを心からお勧めします。これは、これを管理するだけでなく、バ​​ージョンの固定と展開も代行します。

関連する呼び出しは次のようになります。のGemfile

source :rubygems
gem "slim"

その後

gem install bundler && bundle install && bundle exec irb

どの時点でrequire 'slim'動作します。

于 2012-06-24T10:16:48.520 に答える
1

スリムをインストールしているので/var/www/project/gems/、それをロード パスに追加するか、フル パスで要求する必要があります。

require '/var/www/project/gems/slim'

またはロードパスに追加します:

$LOAD_PATH.unshift(File.dirname('/var/www/project/gems/'))
于 2012-06-24T08:48:01.637 に答える