rubygems
必要な場合は、Ruby のKernel.require
メソッドを、インストールされた gems で必要なファイルを検索する独自のメソッドに置き換えます。Ruby 1.9 以降との統合は、基本的にduring startup への呼び出しrequire 'rubygems'
です。これは、実行可能ファイルの (十分に文書化--disable-gems
されていない) オプションで無効にすることができruby
ます。を明示的に呼び出す前に、これを利用してデバッグをセットアップできますrequire 'rubygems'
。
# start with ruby --disable-gems
require 'debug' #standard library debug - doesn't load rubygems
require 'rubygems' #now you can debug this
debugger
デバッグにgemを使用したい場合は、まだ可能ですが、debugger
Rubygems をロードせずにロードする必要があるため、少し面倒です。これを行うには、ロード パスを手動で設定して、Debugger の lib ディレクトリと、Debugger が依存する gem の lib ディレクトリを含める必要があります。これは基本的に、Rubygems がロードされた状態で呼び出すときに Rubygems が行うことですrequire 'debugger'
。
デバッガーに必要なライブラリを特定するには、次のコマンドを使用できます。
ruby -e "lp = $:.dup; gem 'debugger'; puts $: - lp"
これは小さな Ruby スクリプトで、最初にロード パス ($:
はロード パスであり、 も使用できます$LOAD_PATH
) のコピーを取得し、次に Debugger gem をアクティブにして、新しいロード パスと元のロード パスの違いを出力します。これにより、アクティブ化debugger
によってロード パスに追加されるディレクトリが得られます。
私のマシンでは、これは次のようになります。
$ ruby -e "lp = $:.dup; gem 'debugger'; puts $: - lp"
/Users/matt/.rvm/gems/ruby-1.9.3-p385/gems/columnize-0.3.6/lib
/Users/matt/.rvm/gems/ruby-1.9.3-p385/gems/debugger-ruby_core_source-1.2.0/lib
/Users/matt/.rvm/gems/ruby-1.9.3-p385/gems/debugger-linecache-1.2.0/lib
/Users/matt/.rvm/gems/ruby-1.9.3-p385/gems/debugger-1.5.0/lib
これを使用して、Debugger を使用してデバッグするスクリプトを作成できますrequire 'rubygems'
。
# start with ruby --disable-gems
# set up the load path without loading rubygems
$:.unshift '/Users/matt/.rvm/gems/ruby-1.9.3-p385/gems/columnize-0.3.6/lib'
$:.unshift '/Users/matt/.rvm/gems/ruby-1.9.3-p385/gems/debugger-ruby_core_source-1.2.0/lib'
$:.unshift '/Users/matt/.rvm/gems/ruby-1.9.3-p385/gems/debugger-linecache-1.2.0/lib'
$:.unshift '/Users/matt/.rvm/gems/ruby-1.9.3-p385/gems/debugger-1.5.0/lib'
# require debugger and start it
require 'debugger'
debugger
require "rubygems" #now you can debug this with debugger