Ruby 创造红宝石

Ruby 创造红宝石,ruby,Ruby,我正在学习ruby,我想测试如何创建gem文件。我的机器上安装了以下设备。 ruby 1.9.3p362(2012-12-25修订版38607)[x86_64-linux] 捆绑程序版本1.2.3 rake,版本10.0.3 我使用bundle gem hello\u gem创建了一个gem。我在hello\u gem.rb module HelloGem class Base def self.hello puts "Hello Ruby Gem #{HelloGem:

我正在学习ruby,我想测试如何创建gem文件。我的机器上安装了以下设备。 ruby 1.9.3p362(2012-12-25修订版38607)[x86_64-linux] 捆绑程序版本1.2.3 rake,版本10.0.3

我使用
bundle gem hello\u gem
创建了一个gem。我在
hello\u gem.rb

module HelloGem
  class Base
    def self.hello
      puts "Hello Ruby Gem #{HelloGem::VERSION}"
    end
  end
end  
我的文件夹结构如下所示

├── Gemfile
├── Gemfile.lock
├── hello_gem.gemspec
├── lib
│   ├── hello_gem
│   │   └── version.rb
│   └── hello_gem.rb
├── LICENSE.txt
├── Rakefile
├── README.md
然后,我使用rake安装创建了gem。然后我启动了
irb
,我可以执行以下命令

1.9.3-p362 :001 > require 'hello_gem'
 => true 
1.9.3-p362 :002 > HelloGem::Base.hello
Hello Ruby Gem 0.0.1
 => nil 
1.9.3-p362 :003 > 
当我想将代码移动到lib文件夹时,问题出现了。我创建了
lib/hello\u gem/base.rb
,并在那里添加了上述代码。在
hello\u gem.rb
中,我刚刚使用了
require“hello\u gem/base”
。现在我的项目如下所示

├── Gemfile
├── Gemfile.lock
├── hello_gem.gemspec
├── lib
│   ├── hello_gem
│   │   ├── base.rb
│   │   └── version.rb
│   └── hello_gem.rb
├── LICENSE.txt
├── Rakefile
├── README.md
当我使用
rake install
构建gem并使用
irb
测试以下错误时

1.9.3-p362 :001 > require 'hello_gem'
LoadError: cannot load such file -- hello_gem/base
from /home/sandarenu/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /home/sandarenu/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /home/sandarenu/.rvm/gems/ruby-1.9.3-p362/gems/hello_gem-0.0.1/lib/hello_gem.rb:2:in `<top (required)>'
from /home/sandarenu/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `require'
from /home/sandarenu/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `rescue in require'
from /home/sandarenu/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
from (irb):1
from /home/sandarenu/.rvm/rubies/ruby-1.9.3-p362/bin/irb:16:in `<main>'
1.9.3-p362 :002 > 
1.9.3-p362:001>要求“你好”
LoadError:无法加载这样的文件--hello\u gem/base
from/home/sandarenu/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site\u ruby/1.9.1/rubygems/custom\u require.rb:36:in'require'
from/home/sandarenu/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site\u ruby/1.9.1/rubygems/custom\u require.rb:36:in'require'
from/home/sandarenu/.rvm/gems/ruby-1.9.3-p362/gems/hello\u gem-0.0.1/lib/hello\u gem.rb:2:in`'
from/home/sandarenu/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site\u ruby/1.9.1/rubygems/custom\u require.rb:60:in'require'
from/home/sandarenu/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site\u ruby/1.9.1/rubygems/custom\u require.rb:60:in“require中的救援”
from/home/sandarenu/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site\u ruby/1.9.1/rubygems/custom\u require.rb:35:in'require'
来自(irb):1
from/home/sandarenu/.rvm/rubies/ruby-1.9.3-p362/bin/irb:16:in`'
1.9.3-p362:002>
我找不到解决这个问题的方法。如果有人能告诉我我做错了什么,那将是一个很大的帮助


提前谢谢

bundle gem
创建的
.gempec
用于确定gem中包含哪些文件;它包含以下行:

gem.files         = `git ls-files`.split($/)
为了让它添加您的
hello\u gem/base.rb
,您需要将它添加到Git存储库中。由于最初的设置适合您,我假设您已经安装了Git,因此您只需运行:

git add lib/hello_gem/base.rb

实际上,您不需要为
git ls files
提交文件来获取它并将其添加到gem,因此这应该足以让它工作。

bundle gem
创建的
.gempec
用于确定要包含在gem中的文件;它包含以下行:

gem.files         = `git ls-files`.split($/)
为了让它添加您的
hello\u gem/base.rb
,您需要将它添加到Git存储库中。由于最初的设置适合您,我假设您已经安装了Git,因此您只需运行:

git add lib/hello_gem/base.rb

实际上,您不需要为
git ls files
提交文件,就可以将其提取并添加到gem中,因此这应该足以让它工作。

无法复制:。是否确实为此测试打开了新的IRB?可能有帮助。无法复制:。你确定你为考试开了一个新的IRB吗?可能会有帮助啊,我现在想起来了。不久前我自己的宝石有这个问题。:)天啊!。。。它真的奏效了:)。在检查您的答案之前,我刚刚将示例代码发布到。现在它正在工作。我为这个问题挣扎了好几个小时。我检查的所有教程都没有指定此问题。非常感谢。啊,我现在想起来了。不久前我自己的宝石有这个问题。:)天啊!。。。它真的奏效了:)。在检查您的答案之前,我刚刚将示例代码发布到。现在它正在工作。我为这个问题挣扎了好几个小时。我检查的所有教程都没有指定此问题。非常感谢你。