新手问题 gem 打包资源的方法

i5ting · 2013年01月12日 · 最后由 i5ting 回复于 2013年01月13日 · 4814 次阅读

gem 打包资源的方法

方法 1-使用 rake 的方式

require 'rake'
spec.files = FileList['lib/**/*.rb',
                      'bin/*',
                      '[A-Z]*',
                      'test/**/*'].to_a

without Rake...的方式

spec.files = Dir['lib/**/*.rb'] + Dir['bin/*']
spec.files += Dir['[A-Z]*'] + Dir['test/**/*']
spec.files.reject! { |fn| fn.include? "CVS" }

比如我的 gem

# -*- encoding: utf-8 -*-
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'mdpreview/version'
require 'rake'

Gem::Specification.new do |gem|
  gem.name          = "mdpreview"
  gem.version       = Mdpreview::VERSION
  gem.authors       = ["i5ting"]
  gem.email         = ["[email protected]"]
  gem.description   = %q{dsdfn}
  gem.summary       = %q{dsfsdf}
  gem.homepage      = ""
  gem.files         = FileList['lib/**/*.rb',
                        'bin/*',
                        'vendor/**/**/**',
                        'test/**/*'].to_a
  gem.executables   = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
  gem.test_files    = gem.files.grep(%r{^(test|spec|features)/})
  gem.require_paths = ["lib"]
end

这里我的资源 vendor///,有 4 级的目录,所以要用这样的写法

补充一个 gem 规范地址

也可以Dir['{**/*.c,**/*.h']这样子?

#1 楼 @fleuria git ls-files这个不错,可以自动忽略 ignore 里的文件,不过在部署环境没有 git 的时候很麻烦。

#2 楼 @hooopo 嗯我之前没有 git add vendor,所以才用了上面的办法的

需要 登录 后方可回复, 如果你还没有账号请 注册新账号