【问题标题】:Failed to load ruby gem, using require method in IRB无法加载 ruby​​ gem,在 IRB 中使用 require 方法
【发布时间】:2014-04-21 15:41:36
【问题描述】:

我已经创建了自己的 ruby​​gem,但是当我在本地机器上尝试时,出现了一些烦人的问题,我一直在 google 和另一个 StackOverflow 问题中,但仍然没有找到有关此问题的解决方案。

如果我在 irb 中使用非 root 用户并在输入 require 'rubygems' 之后输入 require 'my_own_gem' 我有:

LoadError: no such file to load -- my_own_gem
    from /usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
    from /usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in `require'
    from (irb):2
    from (null):0

但是当使用 root 用户,使用 sudo irb 时,问题没有被发现,一切看起来都很好。

宝石列表 -d my_own_gem

my_own_gem (0.0.1)
    Author: Jane Doe
    Rubyforge: http://rubyforge.org/projects/my_own_gem
    Homepage: google.com
    Installed at: /var/lib/gems/1.8

    lorem ipsum dolor sit amet

宝石环境

RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.7
  - RUBY VERSION: 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux]
  - INSTALLATION DIRECTORY: /var/lib/gems/1.8
  - RUBY EXECUTABLE: /usr/bin/ruby1.8
  - EXECUTABLE DIRECTORY: /var/lib/gems/1.8/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /var/lib/gems/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

.bashrc

export GEM_HOME=/var/lib/gems/1.8
export GEM_PATH=/var/lib/gems/1.8

my_own_gem.gemspec

# -*- encoding: utf-8 -*-
$:.push File.expand_path("../lib", __FILE__)
require "my_own_gem/version"

Gem::Specification.new do |s|
  s.name        = "my_own_gem"
  s.version     = MyOwnGem::VERSION
  s.platform    = Gem::Platform::RUBY
  s.authors     = ["Jane Doe"]
  s.email       = ["j4n3d0e@gmail.com"]
  s.extra_rdoc_files = ["MIT-LICENSE","README.rdoc"]
  s.rdoc_options = ["--charset=UTF-8"]
  s.homepage    = "google.com"
  s.summary     = %q{lorem ipsum}
  s.description = %q{lorem ipsum dolor sit amet}
  s.date = Time.now.utc.strftime("%A, %d% %B %Y")
  s.rubyforge_project = "my_own_gem"

  s.add_dependency "httparty", "= 0.7.8"

  s.post_install_message = "my own gem"

  s.files         = `git ls-files`.split("\n")
  s.test_files    = `git ls-files -- {test,spec,features}/*`.split("\n")
  s.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
  s.require_paths = ["lib"]

end

【问题讨论】:

  • 你是如何安装 ruby​​ 的?听起来您以 root 身份获得的 ruby​​ 与您以普通用户身份获得的 ruby​​ 不同。 which rubysudo which ruby.
  • 从 package-manager 安装,结果是 which ruby​​ 和 sudo which ruby​​ 是 /usr/bin/ruby
  • 你安装了你的 gem 吗?
  • 如果您使用 sudo 安装 gem,非 root 用户是否可以读取它?我不记得加载器是否会区分它无法读取的目录和不存在的目录。 +1 确保“which ruby​​”在使用和不使用 sudo 的情况下返回相同的值。

标签: ruby rubygems gem


【解决方案1】:

尝试添加到您的 .bashrc 文件中

export RUBYOPT="rubygems"

或尝试将您的 gem 安装到 /usr/lib/ruby/gems/1.8/......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 2010-11-06
    • 2013-09-30
    相关资源
    最近更新 更多