概要
通常の gem を作成する方法とほぼ変わりませんが rake compile したり gemspec ファイルの編集が必要になります
プロジェクトの構成や rake-compiler については前回の記事を確認してください
環境
- macOS 10.14.3
- Ruby 2.5.1p57
.gemspec の編集
spec.extensions
を追記します
Gem::Specification.new do |spec|
spec.name = "firstext"
spec.version = FirstExt::VERSION
spec.extensions = ["ext/firstext/extconf.rb"]
# ...
end
途中は長いので省略しています
好きな箇所に追記してもらえれば OK です
コンパイル
最新の .so
or .bundle
ファイルを作成します
bundle exec rake compile
git commit
ビルドする前に gem に含めるファイルをコミットしなければいけません
git add .
git commit -m "add resources"
ビルド
gem ファイルを作成します
通常の gem を作成する方法と同じコマンドで作成できます
bundle exec rake build
これで pkg/firstext-0.1.0.gem
が作成されます
ローカルインストール
ローカルでテストしたい場合は実施します
cd pkg
gem install -l firstext-0.1.0.gem
gem の作り直し
bundle exec rake clobber
bundle exec rake build
gem uninstall firstext
gem install -l firstext-0.1.0.gem
make install
でインストールしてしまった場合は .so
ファイルなどがすでに配置されてしまっており、そちらが優先されている可能性があります
macOS の場合は
rm -rf /usr/local/lib/ruby/site_ruby/2.5.0/x86_64-darwin17/*
あたりを実行してから gem install
してください
その他
NativeExtensions の場合ヘッダファイルやライブラリファイルのインストールが事前に必要な場合があるので apt or yum でインストールしておきましょう
apt や yum でインストールできないライブラリもあるので、その場合は手動で適切なパスに配置してあげます
大抵は必要なヘッダファイルやライブラリは gem のドキュメントに記載されているはずです
ない場合は直接 extconf.rb などを見るしかないと思います
最後に
NativeExtensions を gem ファイルにする方法を紹介しました
あとは通常の rake release の手順で公開することができます
ハマりそうなのは git commit が必要な点かなと思います
未コミットのファイルは対象外になるのでファイルが見つからないなどのエラーが出る場合はちゃんとコミットされているか確認してみてください
0 件のコメント:
コメントを投稿