Techioz Blog

新しい gem を開発するときに新しい機能を追加してパッケージ化する方法

概要

Maker という名前のサンプル gem を作成しました。 RVMも使ってます。

サンプル ユーザー機能を追加するための最近の変更は、この PR に記載されています。 Bundler ドキュメントのこのガイドに従って、新しい gem を作成してきました。

現在、irb 経由で gem を使用しようとしていますが、require Maker を実行すると、以下のエラーが発生します。

 :001 > require 'maker'
LoadError: cannot load such file -- maker/user
    from /Users/mohnishgj/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/mohnishgj/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/mohnishgj/.rvm/gems/ruby-2.4.1@experiments/gems/maker-0.1.0/lib/maker.rb:2:in `<top (required)>'
    from /Users/mohnishgj/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:133:in `require'
    from /Users/mohnishgj/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:133:in `rescue in require'
    from /Users/mohnishgj/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:40:in `require'
    from (irb):1
    from /Users/mohnishgj/.rvm/rubies/ruby-2.4.1/bin/irb:11:in `<main>'
 :002 >
    

実験用 gemset に関して gem がインストールされている場所 (つまり、/Users/mohnishgj/.rvm/gems/ruby-2.4.1@experiments/gems/maker-0.1.0) に移動すると、明らかにわかります。 user.rb ファイルがその場所にないことを確認します。

/Users/mohnishgj/.rvm/gems/ruby-2.4.1@experiments/gems/maker-0.1.0/lib/maker
➜  maker ls
version.rb

新しいファイルを gem の一部として追加し、それを irb から動作させたい場合、これをどのように修正すればよいですか。 gem 関連の開発の一部を間違って行っているのでしょうか?私の無知を許してください。私は gem の作成に関しては比較的初心者です。 gem 関連の開発をソースから正しく行うにはどうすればよいですか?

また、何かが足りない可能性がありますが、Bundler.require(:default, :development)をmaker.gemspec(Gem作成ガイドで提案されているように)に追加しようとしたとき、次のようになります

lib = File.expand_path("../lib", __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require "maker/version"
Bundler.require(:default, :development)

以下のようなエラーが発生しました。

[!] There was an error parsing `Gemfile`:  - [!] There was an error while loading `maker.gemspec`:  - [!] There was an error parsing `Gemfile`:  - [!] There was an error while loading `maker.gemspec`:  - [!] There was an error parsing `Gemfile`:

ここで何が欠けているでしょうか?

解決策

この質問に対する答えは、この投稿で説明されているようにバンドル コンソールを使用することです - http://wsmoak.net/2016/07/10/ruby-gem-dev-irb.html