Gem をつくろう

RMagick と wxRuby2 の gem を作ります。
実はどっちもやり方は簡単。

RMagick の場合

付属の rmagick.gemspec をそのまま使うと、gem インストールの際コンパイルを始めてしまうのでうまくありません。
というわけで、バイナリ用の gemspec を用意します。

RMagick のソースディレクトリにrmagick-mingw32.gemspec というファイルを作って、以下の内容をコピペします。

require 'date'
Gem::Specification.new do |s|
  s.name = %q{rmagick}
  s.version = "2.11.0"
  s.date = Date.today.to_s
  s.summary = %q{Ruby binding to ImageMagick}
  s.description = %q{RMagick is an interface between Ruby and ImageMagick.}
  s.author = %q{Tim Hunter}
  s.email = %q{rmagick@rubyforge.org}
  s.homepage = %q{http://rubyforge.org/projects/rmagick}
  s.files = ['ext/RMagick/RMagick2.so'] + Dir.glob('lib/*') + Dir.glob('lib/**/*')
  s.bindir = 'bin'
  s.executables = Dir.glob('bin/*').collect {|f| File.basename(f)}
  s.require_paths << 'ext/RMagick'
  s.rubyforge_project = %q{rmagick}
  s.has_rdoc = false
  s.platform = Gem::Platform.local
  s.required_ruby_version = '>= 1.9.1'
  s.requirements << 'ImageMagick 6.3.7 and lesser than 6.5.0'
end

gem build を実行すると、。

$ gem build rmagick-mingw32.gemspec
WARNING:  RDoc will not be generated (has_rdoc == false)
  Successfully built RubyGem
  Name: rmagick
  Version: 2.11.0
  File: rmagick-2.11.0-x86-mingw32.gem

gem ファイル「rmagick-2.11.0-x86-mingw32.gem」ができています。

ぎもん

gem に dll を同梱したい場合、どうすればいいのか?
ためしに RMagick/bin に DLL を入れてみたら、ruby1.9/bin にそのdllを呼び出す sh スクリプトとバッチファイルが作られて、使い物になりませんでした(笑)

dllのインストーラを別個に作るしかないのか?*1

wxRuby2 の場合

rake でおk.

$ rake gem
(in C:/msys/1.0/home/asa/work/wxruby-2.0.0)
Enabling UNICODE build
The following wxWidgets features are not available and will be skipped:
  GCDC
  GLCanvas
  GraphicsBrush
  GraphicsContext
  GraphicsFont
  GraphicsMatrix
  GraphicsObject
  GraphicsPath
  GraphicsPen
  MediaCtrl
  MediaEvent
  StyledTextCtrl
  StyledTextEvent
:0:Warning: Gem::manage_gems is deprecated and will be removed on or after March
 2009.
WARNING:  RDoc will not be generated (has_rdoc == false)
  Successfully built RubyGem
  Name: wxruby-ruby19
  Version: 2.0.0
  File: wxruby-ruby19-2.0.0-x86-mingw32.gem

gem ファイル「wxruby-ruby19-2.0.0-x86-mingw32.gem」ができています。

      • -

9/4 検証したら、RMagick のバイナリ用の gemspec が必要なのが判明して追記。
結局びっくりするほどではなかったけれど、それでも思ったより簡単に gem ができました。

*1:9/10 追記:rubysdl では「install_rubysdl.bat を実行せよ」という意味のメッセージが出るようになっていました。