[前][次][番号順一覧][スレッド一覧]

rails:1959

From: Keiji Yoshimi <walf443@g...>
Date: Wed, 17 Jan 2007 05:34:12 +0900
Subject: [rails:1959] Re: 現在のProjectで使っているgemsを知るいい手立ては?

こんばんは( ? )、よしみです。

H.Holon wrote:
>    こんにちは。H.Holonです。
> 
>    しばらく Railsや Rubyで codeを書いていると、マシン
> 内に rubygemsが蓄積してきます。
> 
>    このこと自体はいいのですが、例えば何か作ったものを
> 他人にインストールしてもらうとき、「このgemをいれて
> 下さい」とかお願いしようとすると、今だとスッピンの
> マシンを用意して、一度いれてみるぐらいしか、必要最
> 小限の使用gems の一覧を得る方法を思いつきません。
> 
>    皆さんはそういうとき、どうなさってます?
もう書いてしまった後でgem一覧を得る方法はあまり知らないのですが、
Rakefileに使ったgemを記述しておくことでgemでインストール時に自動的に依存関係を解決できます。(Catalystなどもこの方式のようです)

  spec = Gem::Specification.new do |s|
    s.name = 'package_name'
    s.version = ''
    s.add_dependency('RedCloth', '> 3.0')
    s.add_dependency('RSpec', '> 0.7')
    # ...
  end

つくったものもrake/gempackagetaskを使えば簡単にgemにできます。
 require 'rake/gempackagetask'
  package_task = Rake::GemPackageTask.new(spec) do |pkg|
     pkg.package_dir = 'pkg'
  end

RubyForgeに公開しなくてもgem installコマンドでパスを指定すればローカルにあるgemのインストールなどもできるので通常の配布にも問題ありません。

Rakefileに依存関係を書き込んでおけば、自分のプロジェクトをローカルにインストールした後、

Gem.source_index.map {|i| i.first }
 #=> ["ZenTest-3.4.0", "rcov-0.7.0.1", "activerecord-1.14.4", "markaby-0.5" ]

でgemのローカルにインストールされているパッケージ名の配列がとれるので、

  Gem.source_index_specifilcation("#{package_name}-#{version_name}").dependencies
    #=> [#<Gem::Dependency:0x15aaa18   @version_requirements=#<Gem::Version::Requirement:0x15aa9f0 @requirements=[[">=",   #<Gem::Version:0x15aa8c4 @version="1.1.0">]], @version=nil>, @version_requirement=nil, @name="tidy">]
  
  Gem.source_index.specification('scrapi-1.2.0').dependencies.map {|i| i.name } 
   #=> ["tidy"]

とこんな感じで再帰的に依存関係を探索していけば依存しているすべてのgem一覧が出力できるのではないかと思います。

他の人のと比べてやや労力は多いですが、正攻法ではあるかなと思います。

自動でできる方法を色々考えてみましたが、Railsだとプラグインの依存ライブラリを自動でとってくるのはやっぱり難しいかなぁと思います。(むしろそれ以外のファイルならconfig/boot.rbでまとめてrequireすればあまりばらける問題もないかなと思います。

Gem.instance_variable_get('@loaded_specs').keys  #=> ["actionwebservice", "activerecord", "rails", "rubyforge", "scrapi", "rake", "actionmailer", "actionpack", "RedCloth", "activesupport", "tidy"]

の結果は自分のところでやってみると使ってないはずのscrapiとか入ってるのでなんか怪しい気がします(原因はよくわかりませんが

--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

      1950 2007-01-15 10:54 [holon@r...          ] 現在のProjectで使っているgemsを知るいい手立ては?
      1951 2007-01-15 15:50 ┣[kunimi.ikeda@g...   ]                                       
      1952 2007-01-15 16:03 ┃┣[holon@r...          ]                                     
      1954 2007-01-16 01:54 ┃┗[babie.tanaka@g...   ]                                     
      1957 2007-01-16 15:36 ┃ ┗[kunimi.ikeda@g...   ]                                   
      1958 2007-01-16 16:16 ┃  ┗[holon@r...          ]                                 
->    1959 2007-01-16 21:34 ┗[walf443@g...        ]                                       
      1960 2007-01-17 04:05  ┗[holon@r...          ]