はじめてgemspec書いた
RailsとRails::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をする必要があります。 ちょっと調べてみようかな。