methods=Kernel/i.gem.rubygems
sublibraries=rubygems.gem_runner,rubygems.exceptions,rubygems.commands.check_command,rubygems.server,rubygems.indexer,rubygems.commands.dependency_command,rubygems.requirement,rubygems.user_interaction,rubygems.commands.rdoc_command,rubygems.validator,rubygems.command,rubygems.remote_fetcher,rubygems.custom_require,rubygems.package.tar_header,rubygems.indexer.latest_index_builder,rubygems.indexer.quick_index_builder,rubygems.spec_fetcher,rubygems.commands.cleanup_command,rubygems.package,rubygems.commands.query_command,rubygems.indexer.abstract_index_builder,rubygems.commands.which_command,rubygems.source_index,rubygems.commands.specification_command,rubygems.commands.uninstall_command,rubygems.package.tar_output,rubygems.commands.mirror_command,rubygems.doc_manager,rubygems.platform,rubygems.test_utilities,rubygems.config_file,rubygems.commands.cert_command,rubygems.gem_openssl,rubygems.install_update_options,rubygems.digest.sha1,rubygems.package.f_sync_dir,rubygems.digest.sha2,rubygems.commands.pristine_command,rubygems.uninstaller,rubygems.commands.search_command,rubygems.commands.fetch_command,rubygems.indexer.marshal_index_builder,rubygems.commands.generate_index_command,rubygems.commands.update_command,rubygems.version_option,rubygems.dependency,rubygems.security,rubygems.indexer.master_index_builder,rubygems.commands.build_command,rubygems.gem_path_searcher,rubygems.package.tar_reader.entry,rubygems.digest.digest_adapter,rubygems.ext.rake_builder,rubygems.version,rubygems.ext.configure_builder,rubygems.installer,rubygems.timer,rubygems.commands.server_command,rubygems.commands.lock_command,rubygems.digest.md5,rubygems.commands.stale_command,rubygems.dependency_installer,rubygems.old_format,rubygems.ext.builder,rubygems.package.tar_reader,rubygems.commands.unpack_command,rubygems.source_info_cache,rubygems.source_info_cache_entry,rubygems.dependency_list,rubygems.defaults,rubygems.specification,rubygems.format,rubygems.package.tar_writer,rubygems.commands.sources_command,rubygems.require_paths_builder,rubygems.commands.help_command,rubygems.commands.outdated_command,rubygems.ext.ext_conf_builder,rubygems.builder,rubygems.ext,rubygems.commands.environment_command,rubygems.package.tar_input,rubygems.local_remote_options,rubygems.commands.install_command,rubygems.defaults.operating_system,rubygems.gem_runner,rubygems.commands.list_command,rubygems.command_manager,rubygems.commands.contents_command
requires=rubygems.spec_fetcher,rubygems.specification,rubygems.remote_fetcher,rubygems.requirement,rubygems.builder,rubygems.exceptions,rubygems.source_index,rubygems.source_info_cache_entry,rubygems.digest.sha2,rubygems.defaults.operating_system,rubygems.gem_path_searcher,rubygems.platform,rubygems.defaults,rubygems.user_interaction,rubygems.source_info_cache,rubygems.dependency,rubygems,rubygems.version
classes=Gem,Gem=LoadError,Gem=QuickLoader
is_sublibrary=false

RubyGems を扱うためのクラスやモジュールが定義されているライブラリです。


=== gem コマンドの使い方

  $ gem help
  
    RubyGems は Ruby のための高機能なパッケージ管理ツールです。
    これはより多くの情報へのポインタを含んでいる基本的なヘルプメッセージです。
  
      使用方法:
        gem -h/--help
        gem -v/--version
        gem command [arguments...] [options...]
  
      例:
        gem install rake
        gem list --local
        gem build package.gemspec
        gem help install
  
      さらにヘルプ:
        gem help commands            全ての 'gem' コマンドをリストアップします
        gem help examples            いくつかの使用方法の例を表示します
        gem help platforms           プラットフォームに関する情報を表示します
        gem help <COMMAND>           COMMAND に関するヘルプを表示します
                                       (e.g. 'gem help install')
      より詳しい情報:
        http://rubygems.rubyforge.org

==== Gem パッケージをインストールする

例えば rak ( [[url:http://rak.rubyforge.org/]] ) をインストールするには、以下のいずれかを実行します。

  $ gem install rak
  $ sudo gem install rak

特定のバージョンの Gem パッケージをインストールするには以下のようにします。

  $ gem install rak --version 0.8.1    # バージョン 0.8.1 をインストールする
  $ gem install rak --version '>= 0.5' # バージョン 0.5 以上のものをインストールする

Proxy サーバ経由で Gem パッケージをインストールするには以下のようにします。

  $ gem install rak -p http://user:pasword@proxy.example.com/

==== Gem パッケージをアンインストールする

例えば rak をアンインストールするには、以下のいずれかを実行します。

  $ gem uninstall rak
  $ sudo gem uninstall rak

特定のバージョンの Gem パッケージをアンインストールするには以下のようにします。

  $ gem uninstall rak --version 0.8.1

==== Gem パッケージを更新する

インストールされている Gem パッケージを更新するには以下のようにします。

  $ gem update
  $ sudo gem update

特定の Gem パッケージを更新するには以下のようにします。

  $ gem update rak

==== Gem パッケージを探す

パッケージ名から Gem パッケージを探すことができます。
'active' という文字列をパッケージ名に含むパッケージを探すには以下のようにします。

  $ gem search active       # デフォルトではローカルにインストールされているものから検索します
  $ gem search active -r    # -r オプションをつけるをリポジトリから検索します
  $ gem search active -r -a # -a オプションをつけると全てのバージョンを表示します

より詳細な条件で検索したい場合は query を使用してください。

  $ gem query -n ^rails$ -r # rails にちょうど一致するものを検索する
  $ gem query -n ^rails -r  # rails で始まるものを検索する

パッケージの詳細からキーワード検索することはできません。

==== Gem パッケージを作成する

作成した gemspec ファイルを元にして Gem パッケージを簡単に作成することができます。

  $ gem build <gemspec filename>

最小の gemspec は以下のようになります。ビルドするために必要な最小の gemspec なので出来上がるのは
メタデータのみを含む Gem パッケージです。また、いくつかの警告が表示されます。

  Gem::Specification.new do |s|
    s.name    = 'hello'
    s.version = '0.0.0'
    s.summary = 'hello summary'
  end

実用的なライブラリを作成するための gemspec の例を示します。
警告メッセージが出力されないようにいくつか設定を追加しています。

  Gem::Specification.new do |s|
    s.name              = 'hello'
    s.version           = '0.0.0'
    s.summary           = 'hello summary'
    s.files             = ['lib/hello.rb']
    s.authors           = ['Hello Author']
    s.email             = 'hello_author@example.com'
    s.homepage          = 'http://example.com/hello/'
    s.description       = 'hello description'
    s.rubyforge_project = 'hello'
  end

: name
  この Gem の名前を指定します。
: version
  この Gem のバージョンを指定します。
: summary
  この Gem の短い説明を指定します。
: files
  この Gem に含むファイルのリストを指定します。
: authors
  この Gem の作者のリストを指定します。
: email
  この Gem の作者の連絡先メールアドレスを指定します。
: homepage
  この Gem のウェブサイトの URI を指定します。
: description
  この Gem の長い説明を指定します。
: rubyforge_project
  Rubyforge にプロジェクトがある場合、そのプロジェクト名を指定します。

実行可能なファイル (コマンド) を含む場合の gemspec は以下のようになります。

  Gem::Specification.new do |s|
    s.name              = 'hello'
    s.version           = '0.0.0'
    s.summary           = 'hello summary'
    s.files             = ['bin/hello', 'lib/hello.rb']
    s.executables       = ['hello']
    s.authors           = ['Hello Author']
    s.email             = 'hello@example.com'
    s.homepage          = 'http://example.com/hello'
    s.rubyforge_project = 'hello'
    s.description       = 'hello description'
  end

ライブラリの例に加えて executables を追加しています。

また、以下のように Rakefile にタスクを追加することもできます。

  require 'rake/gempackagetask'
  
  PKG_FILES = FileList[
    'lib/hello.rb',
    'spec/*'
  ]
  spec = Gem::Specification.new do |s|
    s.name             = 'hello'
    s.version          = '0.0.1'
    s.author           = 'Hello Author'
    s.email            = 'hello@example.com
    s.homepage         = 'http://example.com/hello'
    s.platform         = Gem::Platform::RUBY
    s.summary          = 'Hello Gem'
    s.files            = PKG_FILES.to_a
    s.require_path     = 'lib'
    s.has_rdoc         = false
    s.extra_rdoc_files = ['README']
  end
  
  Rake::GemPackageTask.new(spec) do |pkg|
    pkg.gem_spec = spec
  end


@see [[c:Gem::Specification]], [[lib:rake]]

=== gem コマンドの設定
  * GEM_HOME Gem のホームディレクトリ
  * GEM_PATH Gem のサーチパス
  * $HOME/.gemrc

環境変数 GEM_HOME, GEM_PATH を設定する事によって Gem コマンドの動作を変更することができます。
また、ホームディレクトリに .gemrc という YAML フォーマットで書かれたファイルを置くことでも
動作を変更することができます。

例:

  --- 
  :backtrace: false
  :benchmark: false
  :bulk_threshold: 1000
  :sources: 
  - http://gems.rubyforge.org
  :update_sources: true
  :verbose: true
  gemhome: /home/hoge/.gems
  gempath: 
  - /usr/local/lib/ruby/gems/1.9
  gem: --no-rdoc --no-ri


=== 参考
: Rubyist Magazine - シリーズ パッケージマネジメント 【第 1 回】 RubyGems (1)
  [[url:http://jp.rubyist.net/magazine/?0006-PackageManagement]]
: Rubyist Magazine - シリーズ パッケージマネジメント 【第 2 回】 RubyGems (2)
  [[url:http://jp.rubyist.net/magazine/?0010-PackageManagement]]
