より良いバンドラーを学ぶ

Bundlerは、ジャムをインストールして追跡するための優れた方法であることが判明しました。これは、ほとんどすべてのプロジェクトで使用されるように、すべてのプロジェクトに必要なものです。 ただし、その遍在にもかかわらず、ほとんどのユーザーは、バンドラーの組み込みツールとヘルパーを認識していません。 認知度(およびRuby開発者のパフォーマンス)を高めるために、それらについて説明します。







インストール、更新、および期限切れ



おそらくこれはすでにご存知でしょうが、初心者向けにこれを一般化します。 バンドルインストールを実行して、プロジェクトに必要なパッケージをインストールします。 git pullを開始したばかりで、そこに新しいジャムが現れたらどうしますか? バンドルインストール 。 Gemfileで新しいジャムを追加したか、ジャムのバージョンを変更しただけですか? バンドルインストールbundle updateを実行する方が論理的に思えますが、これはジャムをインストールするだけでなく、パッケージ内のすべてのジャムを更新しようとします。 もちろん、あなたが本当にそれを計画していなければ、これは通常災害を意味します。

使用済みのジャムが更新され、Gemfileの実行を許可する最新バージョンをパッケージに含める場合は、 updateコマンドを使用する必要があります。 期限切れのバンドルを実行して、更新可能なジャムのリストを印刷します。 特定のジャムを更新する場合は、 バンドル更新GEMまたはバンドル更新を実行してすべてを更新します。 アップグレード後、新しいGemfile.lockをコミットする前に、すべてのテストに合格することを確認してください!



表示して開く



ほとんどの人はバンドルショーについて知っています。これは、ジャムのインストール場所へのフルパスを出力します(おそらく、インストールが成功した場合にこのコマンドが実行されるためです)。 ただし、エディターでジャムをすぐに開くbundle openコマンドの方がはるかに便利です。 最小限のデモを次に示します。

$ bundle install Fetching gem metadata from https://rubygems.org/.......... Resolving dependencies... Installing rack (1.5.2) Using bundler (1.3.1) Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed. $ echo $EDITOR mate -w $ bundle open rack
      
      







エディターでラックを開くために必要なのはこれだけです。 ジャムを探すことなく開くことができることは、デバッグするのに最適な方法です。 これにより、印刷またはデバッグ用のステートメントを数秒で挿入できます。 ジャムを変更した場合は、忘れずにリセットしてください! 将来的には、このために初期コマンドが作成されますが、今のところはbundle exec gem pristineを実行して、編集したジャムを復元します。



検索する



showコマンドには、さらに別のトリックがあります: bundle show --paths 。 すべてのパスをリストすることはそれほど便利ではないかもしれませんが、パッケージ内のすべてのジャムのソースコードを検索するのがはるかに簡単になります。 ActionDispatch :: RemoteIpが記述されている場所を知りたいですか? 1行だけ:

 $ grep ActionDispatch::RemoteIp `bundle show --paths`
      
      





grep、ack、agのいずれを使用するかに関係なく、シェル関数の設定が非常に簡単になり、数文字でパッケージを検索できるようになりました。 ここに私のものがあります:

 function back () { ack "$@" `bundle show --paths` }
      
      





この機能により、検索がさらに簡単かつ高速になりました。

 $ back ActionDispatch::RemoteIp
      
      







ビンスタブ



バンドラーを使用することで最も厄介なことの1つは、コマンドを実行するたびに(おそらく) bundle execを実行する必要があることです。 これを回避する最も簡単な方法は、 Bundler binstubsをインストールすることですbundle binstubs GEMを実行することにより、bin /フォルダーにスタブを生成できます。 これらのスタブは、コマンドを実行する前にパッケージと正しいジャムバージョンをロードします。 rspec用にbinstubを構成する例を次に示します。

 $ bundle binstubs rspec-core $ bin/rspec spec No examples found. Finished in 0.00006 seconds 0 examples, 0 failures
      
      





binstubsは、頻繁に実行するコマンド、またはcronjobを介して実行する可能性のあるコマンドに使用します。 binstubは大量のコードをロードすべきではないため、非常に高速に動作します。 Rails 4はビンスタブに適合しており、bin / railsおよびbin / rakeで終了します。 特定のアプリケーションに対して常に実行されるように構成されます。



Gemfileを作成



新しいGemfileを作成するたびにソース「https://rubygems.org/」を入力するのは非常に不便であるという不満を多く見ました。 幸いなことに、バンドル業者があなたのためにそれを行います! 新しいプロジェクトを開始するとき、Rubygems.orgをソースとして使用して、1つのコマンドのみを実行することにより、新しいGemfileを作成できます。

 $ bundle init
      
      





これで、ジャムを追加して、あなた自身の喜びを設定する準備が整いました!



ローカルGitジャム



多くの人が、Gemfileでジャムを修正してコミットするために、どのようにバンドラーを使用できるかを尋ねました。 JoséValimの努力のおかげで、Bundler 1.2はこれを非常にエレガントにしています。 1つのセットアップで、独自のgitクローンを開発にアップロードできますが、実稼働環境にデプロイすると、最後に使用したコミットがチェックされます。

ラックのローカルgitコピーをセットアップする方法は次のとおりです。

 $ echo "gem 'rack', :github => 'rack/rack', :branch => 'master'" >> Gemfile $ bundle config local.rack ~/sw/gems/rack $ bundle show rack /Users/andre/sw/gems/rack
      
      







すべてを構成したら、アプリケーションが使用するコードを変更するか、必要に応じてそのリポジトリにコミットできます。



Rubyバージョン



1.2 bundlerのもう1つの機能は、Rubyバージョンのリクエストです。 アプリケーションが1つのバージョンのRubyのみで動作することがわかっている場合は、このバージョンをリクエストできます。 バージョン番号を文字列として指定して、Gemfileに1行追加するだけです。

 ruby '1.9.3'
      
      





これで、異なるバージョンのRubyでアプリケーションを実行しようとするたびに、バンドラーは例外をスローします。 開発中に誤って間違ったバージョンを使用することを心配する必要はもうありません!



依存関係図



バンドラーはGemfileを使用して、いわゆる依存関係スキームを作成します。これは、多くのジャムとそれらの相互依存関係を示します。 依存関係のグラフィカルな図を見ることは非常に興味深く、便利な場合があり、これがbundle vizコマンドの機能です。 GraphVizおよびruby-graphvizジャムをインストールする必要があります。

 $ brew install graphviz $ gem install ruby-graphviz $ bundle viz
      
      





その後、依存関係の美しい概要が表示されます。 Railsジャムを1つだけ含むGemfileダイアグラムを次に示します。





パッケージ内のIRB



大規模なフィナーレの前に、最後のヒントがあります。チームコンソールです。 バンドルコンソールを起動すると、IRBプロンプトが開くだけでなく、パッケージ全体とすべてのジャムも読み込まれます。 使用されているジャムを試してみたいが、Railsコンソールを呼び出すためのRailsジャムがない場合、これは優れた代替手段です。

 $ bundle console >> Rack::Server.new => #<Rack::Server:0x007fb439037970 @options=nil>
      
      







新しいジャムを作成する



そして最後に、すべてのインストール後にバンドラーで最も役立つものは何ですか。 バンドラーはジャムを管理するように設計されているため、バンドラーチームはジャムの管理と作成を非常に簡単にすることに非常に意欲的です。 bundle gem NAMEを実行するだけで、ジャムのベースでフォルダを作成できます。 これにより、gemspec、readme、およびlibファイルを含むフォルダーが作成され、そこにコードを配置できます。 コードを追加したら、 rake installを実行して確認のためにシステムにこのジャムをインストールできます ジャムに満足し、他の人と共有したい場合は、 rake releaseを実行して、新しいバージョンのジャムをrubygems.orgに追加できます。 副作用として、この方法で作成されたジャムはgitジャムとして使用できます。 これは、あなた(およびこのジャムを使用している他のすべての人)がコミットをコピー、編集、および収集できることを意味します。



まとめると



バンドラーに関する非常に多くの有用なことがわかったので、テストすることをお勧めします。 検索を使用して、ジャムを作成します!

私が知る限り、バンドラーは、コードの共同作業と使用のプロセスを簡素化し、Rubyを誰にとっても最高にするという点で最も便利です。



注:バンドルコアチームのメンバーであるEngine Yardの友人AndréArkoがこのすばらしい記事を書いてくれました。 彼のサイトを見ることを忘れないでください。



All Articles