无法在计算机上使用创建的gem

时间:2013-08-10 22:35:41

标签: ruby rubygems gem require

我使用以下gemspec文件创建了一个gem。

$:.push File.expand_path("../lib", __FILE__)

Gem::Specification.new do |s|
  s.name        = 'SomeToken'
  s.version     = '0.0.0'
  s.date        = '2013-08-04'
  s.summary     = "A gem for use with SomeToken."
  s.description = "A gem for use with SomeToken."
  s.authors     = ["Jason Tanner"]
  s.email       = 'jasontanner328@gmail.com'
  s.files       = Dir.glob '**/*'
  s.homepage    = ''
  s.license     = ''
end

然后在我的终端我运行

gem build sometoken.gemspec

然后,

gem install ./SomeToken-0.0.0.gem

gem已成功安装,因此当我运行irb并运行时...

require 'SomeToken'

以错误

回应
LoadError: cannot load such file -- SomeToken
    from /Users/jason/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:51:in `require'
    from /Users/jason/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:51:in `require'
    from (irb):1
    from /Users/jason/.rvm/rubies/ruby-2.0.0-p195/bin/irb:16:in `<main>'

我尝试过多种组合更换字符串的外壳,但仍然会出现同样的错误。我的宝石出了什么问题?如何解决?

2 个答案:

答案 0 :(得分:1)

尝试require 'some_token'

一般使用require

require采用ruby文件的名称,而不是gem的名称。例如,如果您具有以下目录结构

- foo.rb
- main.rb

然后在main.rb中,您可以使用require 'foo'来使用foo.rb中的内容。

使用require with gems

请注意,您的gemspec的第一行有$:.push File.expand_path("../lib", __FILE__)。这会将gem的lib目录添加到搜索路径中。因此,如果你有

lib/
  some_token.rb

然后你应该使用require 'some_token'

答案 1 :(得分:0)

我不知道Ruby 2.0.0是否有这个'bug',但是一些Ruby版本必须有

require 'rubygems'

在你需要任何宝石之前。

猜猜值得一试:)