0

アプリケーションに`rack/ test`をロードしようとしていますが、何らかの理由で機能しません。私がする時:

gem list rack-test

私は得る

rack-test (0.6.2)

だからそれはインストールされています。

次の方法でパスを取得することもできます。

gem which rack/test

これは

/home/jacky/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/gems/1.9.1/gems/rack-test-0.6.2/lib/rack/test.rb

しかしその後

ruby -e 'puts $LOAD_PATH.inspect; $LOAD_PATH << "/home/jacky/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/gems/1.9.1/gems/"; require "rack/test"'

収量

["/home/jacky/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1", "/home/jacky/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/i686-linux", "/home/jacky/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby", "/home/jacky/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/vendor_ruby/1.9.1", "/home/jacky/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/vendor_ruby/1.9.1/i686-linux", "/home/jacky/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/vendor_ruby", "/home/jacky/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1", "/home/jacky/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/i686-linux"]
/home/jacky/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- rack/test (LoadError)
    from /home/jacky/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from -e:1:in `<main>'

私は何が間違っているのですか?

4

2 に答える 2

0

これは、gemファイルの権限の問題である可能性があります。rack/test.rbファイルを判読不能にすると、表示されている内容を再現できます。

$ ls -l `gem which rack/test`
-rw-r--r--  1 matt  staff  9723  5 Nov 19:42 /Users/matt/.rvm/gems/ruby-1.9.3-p194/gems/rack-test-0.6.2/lib/rack/test.rb
$ ruby -e 'p require "rack/test"'
true
$ chmod a-r `gem which rack/test`
$ ls -l `gem which rack/test`
--w-------  1 matt  staff  9723  5 Nov 19:42 /Users/matt/.rvm/gems/ruby-1.9.3-p194/gems/rack-test-0.6.2/lib/rack/test.rb
$ ruby -e 'p require "rack/test"'
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `require': cannot load such file -- rack/test (LoadError)
        from /Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `rescue in require'
        from /Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
        from -e:1:in `<main>'

つまり、ファイルが存在するが何らかの理由で読み取れない場合は、ファイルがgem which表示されますが、Rubyで実行しようとすると、ファイルrequireを読み取ることを意味するため、 。が発生しLoadErrorます。

権限を確認してください

$ ls -l `gem which rack/test`

それらはのように見えるはずです-rw-r--r--。そうでない場合、これはあなたの問題である可能性があります。簡単な修正はchmod、アクセス許可を修正するために使用することですが、他のファイルも調べて、アクセス許可が間違っている理由を特定することをお勧めします。

于 2012-11-17T03:23:38.850 に答える
0

rvmを再インストールすることで解決しました。何らかの理由で余分なルビー実行可能ファイルがあり、それは物事を台無しにしました。

于 2012-11-20T20:36:41.893 に答える