写宝石时不要求工作

时间:2011-12-26 06:50:35

标签: ruby gem require

我正在尝试使用捆绑器编写一个宝石(跟随ryan的轨道广播 - 245) 我按照瑞安描述的一切。我还在lib文件夹中添加了4个ruby文件,以了解如何使用不同的gem。

我认为它会自动要求将这些rb文件放在lib文件夹中。 但不幸的是,当我测试它时,它会抛出一个错误说 没有这样的文件加载lib / myclass.rb
这就是我的lorem.rb的样子。

require 'lorem/version'  
require 'lorem/myclass'  

Module Lorem  
.....  
end  

我缺少什么?任何人都可以告诉宝石需要如何运作?

注意:我用回声来做它并且它有效。但当我使用bulder,gemspec和所有我根本不明白为什么它不加载文件。

我的宝石规格文件

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

Gem::Specification.new do |s|
  s.name        = "lorem"
  s.version     = Lorem::VERSION
  s.authors     = ["My Name"]
  s.email       = ["me@domain.com"]
  s.homepage    = ""
  s.summary     = %q{learing bundler gem}
  s.description = %q{Learing bundler gem}

  s.rubyforge_project = "lorem"

  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"]

  #s.add_development_dependency "rspec"
  #s.add_development_dependency "supermodel"
end

提前致谢

2 个答案:

答案 0 :(得分:1)

在您的gemspec中,尝试将$:.push File.expand_path("../lib", __FILE__)替换为:

$:.unshift('lib')

答案 1 :(得分:0)

终于搞砸了。

lib = File.expand_path('../lib/', __FILE__)  
$:.unshift lib unless $:.include?(lib) 

并在

中提供以下内容
Gem::Specification.new do |s|

  ...
  s.files        = Dir.glob("{bin,lib}/**/*")
  ...

end

我从http://yehudakatz.com/2010/04/02/using-gemspecs-as-intended/

得到了这个提示