woshidan's loose leaf

ぼんやり勉強しています

はじめてgemspec書いた

RailsRails::Engineの話を少し調べたかったので、 Engineの方をGithubに上げてgemとして取得するように設定して、 bundle installしたら、

admin_book_store at /Users/woshidan/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/bundler/gems/admin_book_store-3a434d72464c did not have a valid gemspec.
This prevents bundler from installing bins or native extensions, but that may not affect its functionality.
The validation message from Rubygems was:
  "FIXME" or "TODO" is not an author

と怒られてしまった。どうやらgemにはgemspecというファイルに何やら設定が必要で、gemspecというファイルは

rails plugin new engine_name --mountable

をした時点でルートディレクトリにengine_name.gemspecという名前に入っているみたい。

$:.push File.expand_path("../lib", __FILE__)

# Maintain your gem's version:
require "admin_book_store/version"

# Describe your gem and declare its dependencies:
Gem::Specification.new do |s|
  s.name        = "admin_book_store"
  s.version     = AdminBookStore::VERSION
  s.authors     = ["TODO: Your name"]
  s.email       = ["TODO: Your email"]
  s.homepage    = "TODO"
  s.summary     = "TODO: Summary of AdminBookStore."
  s.description = "TODO: Description of AdminBookStore."
  s.license     = "MIT"

  s.files = Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.rdoc"]
  s.test_files = Dir["test/**/*"]

  s.add_dependency "rails", "~> 4.1.0"

  s.add_development_dependency "sqlite3"
end

となっているので所定の値を埋めておく。

$:.push File.expand_path("../lib", __FILE__)

# Maintain your gem's version:
require "admin_book_store/version"

# Describe your gem and declare its dependencies:
Gem::Specification.new do |s|
  s.name        = "admin_book_store"
  s.version     = AdminBookStore::VERSION
  s.authors     = ["woshidan"]
  s.email       = ["bibro.pcg@gmail.com"]
  s.homepage    = "http://woshidan.hatenablog.com"
  s.summary     = "the test of bootstrap-sass"
  s.description = "in xxx"
  s.license     = "MIT"

  s.files = Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.rdoc"]
  s.test_files = Dir["test/**/*"]

  s.add_dependency "rails", "~> 4.1.0"

  s.add_development_dependency "sqlite3"
end

ここで読み込むファイルのディレクトリ等を指定できるので、test用のダミーファイル等を含ませたくない場合は、

  s.files = Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.rdoc"]
  s.test_files = Dir["test/**/*"]

この辺りをいじればよさそうと思ったりもした。

なお、変更を加えてGithubに上げたあと、bundle installをするのではなく、bundle updateをする必要があります。 ちょっと調べてみようかな。