私は Ruby で IDE を書いていますが、コマンド ラインでプログラムを実行し、Rubygem としてインストールしたときに、すべてのファイルを「必須」にする方法に困惑しています。
私のRubygemには、「vr」という名前の実行可能ファイルが含まれています。この「vr」実行可能ファイルに、プロジェクトの他のすべてのファイルを「必須」にする必要があります。
私が開発しているとき、すべてのプロジェクトのファイルを要求するのは簡単です。次のように、それらへの相対パスを単に「要求」します。
require_all Dir.glob(File.expand_path(File.dirname(__FILE__)) + "/../bin/**/*.rb")
require_all gem は完璧に機能します。しかし、このプログラムを rubygem としてインストールすると、大きな問題が発生します。「vr」実行可能ファイルが rubygems によってインストールされると、「vr」実行可能ファイルが特別なディレクトリにコピーされます。
/home/eric/.rvm/gems/ruby-1.9.3-p125/bin
このディレクトリは、プロジェクトのルート フォルダーから完全に分離されています。そのため、私のプロジェクトのすべてのファイルは、「require」ステートメントによって検出されなくなりました。
Rubygems は、このディレクトリを gem のルートとして作成します。
/home/eric/.rvm/gems/ruby-1.9.3-p125/visualruby-0.0.55
そのディレクトリのすべてのファイルを自分のプロジェクトに「要求」できる必要があります。
これまでの私の解決策は、プロジェクトの lib フォルダーにある「visualruby.rb」という 2 番目のファイルを作成することです。すべてのプロジェクト ファイルを要求するために、require_all ステートメントが含まれています。次に、このコードを「vr」実行可能ファイルに追加して、実行可能ファイルをリンクするだけです。
base_file = File.dirname(__FILE__) + '/lib/visualruby.rb'
if File.file?(base_file)
require base_file #load from project
else
require 'visualruby.rb' #load from gem
end
現在のファイルに相対的な「visualruby.rb」という名前のファイルがあるかどうかを確認する必要があります。これは、開発中に、インストールされている gem の「visualruby.rb」のバージョンが常に検出されるためです。 、効果はありません。変更を機能させるには、開発プロジェクトからバージョンを強制的にロードする必要があります。
また、私の IDE はゼロからプロジェクトを作成するので、これに対する一般的な解決策を知っておくとよいでしょう。すべてのプロジェクトで一貫したプロジェクト ファイル システムを使用したいのですが、それが可能かどうかはわかりません。すべてのプロジェクトに対して「requires.rb」というファイルを作成するという一般的な解決策がありましたが、すべてのプロジェクトで同じファイル名が $LOAD_PATH に追加されるため、うまくいかないと思います。
一貫したファイル構造を作成して開発し、rubygem を作成する方法を理解するのを手伝ってください。