“要求”的问题在于,关键字未找到要加载的文件 [英] A problem with the "require" keyword not finding the file to load

查看:97
本文介绍了“要求”的问题在于,关键字未找到要加载的文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在ruby中的require关键字有问题,我只是使用下载一个gem:

  gem install thegem 

当我尝试运行一个示例时,收到以下错误消息:

 < internal:lib / ruby​​gems / custom_require>:29:在'require'中:不需要加载这样的文件 -  
./thegem/some / path(LoadError)

在问题代码中:

  needs_to_load = a_class 
需要gem / some / path /#{needs_to_load}

我是一个Ruby noob,学习了我的方式,但我不确定这是什么,谷歌搜索没有帮助,但透露它可能是由于需要一个相对路径,但将第二行更改为下列内容并没有帮助:

  require./gem/some/path/# {needs_to_load}

我将RVM与以下ruby版本配合使用: ruby-1.9.2-head



(p。抱歉,如果在相关问题字段中我没有看到任何内容,请提问)



<编辑:追加'rvm info'和'gem的输出env'per Tin Man's request below]

  $ gem env 

RubyGems环境:
- RUBYGEMS VERSION:1.3.7
- RUBY VERSION:1.9.2(2010-08-18 patchlevel 0)[i386-darwin9.8.0]
- 安装目录:/Users/username/.rvm/ gems / ruby​​-1.9.2-head
- RUBY EXECUTABLE:/Users/username/.rvm/rubies/ruby-1.9.2-head/bin/ruby
- 可执行目录:/用户/用户名/.rvm/gems/ruby-1.9.2-head/bin
- RUBYGEMS平台:
- ruby​​
- x86-darwin-9
- 创业板路径:
- /Users/username/.rvm/gems/ruby-1.9.2-head
- /Users/username/.rvm/gems/ruby-1.9.2-head@global
- 创业板配置:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- 远程来源:
- http://rubygems.org/

$ rvm信息

ruby​​-1.9.2-head:

系统:
uname:达尔文macintosh 10.5.0达尔文内核版本10.5.0:星期五11月5日23:20:39 PDT 2010; root:xnu-1504.9.17〜1 / RELEASE_I386 i386
zsh:zsh 4.3.9(i386-apple-darwin10.0)
bash:GNU bash,版本3.2.48(1) - 发行版(x86_64-apple-darwin10.0 )

rvm:
版本:rvm 1.0.1 by Wayne E. Seguin(wayneeseguin@gmail.com)[http://rvm.beginrescueend.com/]

ruby​​:
解释器:ruby
版本:1.9.2p0
日期:2010-08-18
平台:i386- darwin9.8.0
patchlevel:2010-08-18 revision 29034
full_version:ruby 1.9.2p0(2010-08-18 revision 29034)[i386-darwin9.8.0]

家园:
gem:/Users/username/.rvm/gems/ruby-1.9.2-head
ruby​​:/Users/username/.rvm/rubies/ruby -1.9.2 -head

二进制文件:
ruby​​:/Users/username/.rvm/rubies/ruby-1.9.2-head/bin/ruby
irb:/ Users / username / .rvm / rubies / ruby​​-1.9.2-head / bin / irb
gem:/Users/username/.rvm/rubies/ruby-1.9.2-head/bin/gem
rake:/Users/username/.rvm/gems/ruby-1.9.2-head/bin/rake

环境:
路径:/ Users / username /.rvm/gems/ruby-1.9.2-head/bin:/Users/username/.rvm/gems/ruby-1.9.2-head@global/bin:/Users/username/.rvm/rubies/ruby- 1.9.2头/斌:/Users/username/.rvm/bin:/Library/Frameworks/Python.framework/Versions/2.6/bin:/ SW /斌:/ SW / sbin目录中:/ opt / local / bin目录:的/ opt / local / sbin中中:/ opt / git的/ bin中:在/ usr / bin中:/ bin中:/ usr / sbin目录:/ sbin目录:在/ usr / local / bin目录:在/ usr / X11 / bin中:在/ usr /本地/ MySQL的/ bin:/ usr / X11R6 / bin
GEM_HOME:/Users/username/.rvm/gems/ruby-1.9.2-head
GEM_PATH:/Users/username/.rvm/ gems / ruby​​-1.9.2-head:/Users/username/.rvm/gems/ruby-1.9.2-head@global
BUNDLE_PATH:/Users/username/.rvm/ge ms / ruby​​-1.9.2-head
MY_RUBY_HOME:/Users/username/.rvm/rubies/ruby-1.9.2-head
IRBRC:/Users/username/.rvm/ ruby-1.9.2-head / .irbrc
RUBYOPT:
gemset:

$ b $如果你使用正常的 gem install somegem ,那么你应该能够 require'somegem',没有任何路径添加到gem的名称。 require_relative 对于安装在普通Ruby搜索路径之外的宝石和模块非常有用,例如您已经编写并嵌入到 lib $ b $>使用 gem env 并追加其输出通过编辑来回答原来的问题,这将帮助我们确定这是否是一个路径问题。因为您使用的是RVM,所以您的宝石路径应该指向您的〜/ .rvm 文件夹。如果你做了 rvm info 它也会给你路径信息,所以比较这两个命令的输出来看它们是否一致。


I have a problem with the "require" keyword in ruby, I just downloaded a gem using:

gem install thegem

And when I tried running an example I received the following error:

<internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- 
    ./thegem/some/path (LoadError)

In the code where the problem is:

needs_to_load = a_class
require "gem/some/path/#{needs_to_load}"

I'm a Ruby noob learning my way around and am not sure what this is, a google search didn't help but revealed that it may be due to needing a relative path, however changing the 2nd line to the following did not help:

require "./gem/some/path/#{needs_to_load}"

I'm using RVM with the following ruby version: ruby-1.9.2-head.

(p.s. sorry if this has been asked before I didn't see anything for it in the related questions field)

[Edit: appending the output of 'rvm info' and 'gem env' per Tin Man's request below]

$ gem env

RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.7
  - RUBY VERSION: 1.9.2 (2010-08-18 patchlevel 0) [i386-darwin9.8.0]
  - INSTALLATION DIRECTORY: /Users/username/.rvm/gems/ruby-1.9.2-head
  - RUBY EXECUTABLE: /Users/username/.rvm/rubies/ruby-1.9.2-head/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/username/.rvm/gems/ruby-1.9.2-head/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-darwin-9
  - GEM PATHS:
     - /Users/username/.rvm/gems/ruby-1.9.2-head
     - /Users/username/.rvm/gems/ruby-1.9.2-head@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

$ rvm info

ruby-1.9.2-head:

  system:
    uname:       "Darwin macintosh 10.5.0 Darwin Kernel Version 10.5.0: Fri Nov  5 23:20:39 PDT 2010; root:xnu-1504.9.17~1/RELEASE_I386 i386"
    zsh:         "zsh 4.3.9 (i386-apple-darwin10.0)"
    bash:        "GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)"

  rvm:
    version:      "rvm 1.0.1 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/]"

  ruby:
    interpreter:  "ruby"
    version:      "1.9.2p0"
    date:         "2010-08-18"
    platform:     "i386-darwin9.8.0"
    patchlevel:   "2010-08-18 revision 29034"
    full_version: "ruby 1.9.2p0 (2010-08-18 revision 29034) [i386-darwin9.8.0]"

  homes:
    gem:          "/Users/username/.rvm/gems/ruby-1.9.2-head"
    ruby:         "/Users/username/.rvm/rubies/ruby-1.9.2-head"

  binaries:
    ruby:         "/Users/username/.rvm/rubies/ruby-1.9.2-head/bin/ruby"
    irb:          "/Users/username/.rvm/rubies/ruby-1.9.2-head/bin/irb"
    gem:          "/Users/username/.rvm/rubies/ruby-1.9.2-head/bin/gem"
    rake:         "/Users/username/.rvm/gems/ruby-1.9.2-head/bin/rake"

  environment:
    PATH:         "/Users/username/.rvm/gems/ruby-1.9.2-head/bin:/Users/username/.rvm/gems/ruby-1.9.2-head@global/bin:/Users/username/.rvm/rubies/ruby-1.9.2-head/bin:/Users/username/.rvm/bin:/Library/Frameworks/Python.framework/Versions/2.6/bin:/sw/bin:/sw/sbin:/opt/local/bin:/opt/local/sbin:/opt/git/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/mysql/bin:/usr/X11R6/bin"
    GEM_HOME:     "/Users/username/.rvm/gems/ruby-1.9.2-head"
    GEM_PATH:     "/Users/username/.rvm/gems/ruby-1.9.2-head:/Users/username/.rvm/gems/ruby-1.9.2-head@global"
    BUNDLE_PATH:  "/Users/username/.rvm/gems/ruby-1.9.2-head"
    MY_RUBY_HOME: "/Users/username/.rvm/rubies/ruby-1.9.2-head"
    IRBRC:        "/Users/username/.rvm/rubies/ruby-1.9.2-head/.irbrc"
    RUBYOPT:      ""
    gemset:       ""

解决方案

If you use a normal gem install somegem, then you should be able to require 'somegem', without any path added to the name of the gem. require_relative is useful for gems and modules that are installed somewhere out of the normal Ruby search paths, such as ones you've written and embedded in a lib directory immediately below the calling script's directory.

Use gem env and append its output to your original question by editing it, which will help us determine if it's a pathing issue. Because you are using RVM, your gem path should be pointing into your ~/.rvm folder. If you do rvm info it will also give you path info, so compare the output of those two commands to see if they are consistent.

这篇关于“要求”的问题在于,关键字未找到要加载的文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆