【发布时间】:2014-04-21 15:41:36
【问题描述】:
我已经创建了自己的 rubygem,但是当我在本地机器上尝试时,出现了一些烦人的问题,我一直在 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 ruby和sudo which ruby. -
从 package-manager 安装,结果是 which ruby 和 sudo which ruby 是 /usr/bin/ruby
-
你安装了你的 gem 吗?
-
如果您使用 sudo 安装 gem,非 root 用户是否可以读取它?我不记得加载器是否会区分它无法读取的目录和不存在的目录。 +1 确保“which ruby”在使用和不使用 sudo 的情况下返回相同的值。