LoadError:无法加载此类文件 - gemname/base

swa*_*psm 3 ruby rubygems ruby-on-rails ruby-2.0

我正在开发一个简单的红宝石宝石,我需要额外的课程.以下是我的gemname/lib目录的文件:

lib/
   gemname/
          base.rb
          version.rb
   gemname.rb
Run Code Online (Sandbox Code Playgroud)

require "gemname/base"在我的gemname.rb中包含了该语句.

在本地构建和安装gem并转到irb和之后require gemname,我收到以下错误:

LoadError: cannot load such file -- ./gemname/base
    from /home/swaroop/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:51:in `require'
    from /home/swaroop/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:51:in `require'
    from /home/swaroop/.rvm/gems/ruby-2.0.0-p0/gems/gemname-0.0.6/lib/gemname.rb:2:in `<top (required)>'
    from /home/swaroop/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:116:in `require'
    from /home/swaroop/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:116:in `rescue in require'
    from /home/swaroop/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:122:in `require'
    from (irb):1
    from /home/swaroop/.rvm/rubies/ruby-2.0.0-p0/bin/irb:13:in `<main>'
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

kuk*_*krt 5

您的gemname.gemspec文件应包含这样的内容.

spec.files = `git ls-files -z`.split("\x0")
Run Code Online (Sandbox Code Playgroud)

您收到错误消息,因为您没有使用git版本文件.如果你rake install在使用之前运行git,那么如果你这样做

irb
require "gemname"
Run Code Online (Sandbox Code Playgroud)

这会引起错误.

这就是原因.看看它的安装路径.

gem list -d gemname  # this should return something like this

gemname (0.0.1)
    Author: your name
    License: MIT
    Installed at: /Users/your_name/.rbenv/versions/2.0.0/lib/ruby/gems/2.0.0
Run Code Online (Sandbox Code Playgroud)

打开位置并找到您的gem文件夹.你应该看到nothing那里.

现在,将您的文件添加到git并至少提交一次.

git init
git add .
git commit -m "init"
Run Code Online (Sandbox Code Playgroud)

然后做,rake install并要求它不应该引起错误.

irb
require "gemname" # no error, and you should see files in this gem's install folder.
Run Code Online (Sandbox Code Playgroud)