我正在尝试使用捆绑器编写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/