需要不工作而编写一个宝石



我正在尝试使用捆绑器编写gem(遵循ryan的railcast - 245)
我照瑞恩说的做了。我还在lib文件夹中添加了4个ruby文件,以了解require如何与不同的gem一起工作。

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

require 'lorem/version'  
require 'lorem/myclass'  
Module Lorem  
.....  
end  

我错过了什么?有谁能告诉我gem require是怎么工作的吗?

NB:我以前用echo来做,它很有效。但是当我使用builder, gemspec和所有我只是不明白为什么它不加载文件。

我的gem Spec文件

# -*- 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

thanks in advance

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

$:.unshift('lib')

终于破解了。

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/

相关内容

最新更新