pluginのインストールとか

Railsでは追加機能や、基本機能の拡張などを plugin という方法で行います。pluginは様々なところで公開していて、プロジェクトごとにインストールして使用します。pluginの管理には基本、script/plugin を使います。このコマンドでSVNを使ってネットから必要なプラグインを探したり、ダウンロードしてインストールしたりします。

簡単な使い方

利用可能なプラグインの一覧を表示。

$ ruby script/plugin list
account_location              http://dev.rubyonrails.com/svn/rails/plugins/account_location/
acts_as_list                  http://dev.rubyonrails.com/svn/rails/plugins/acts_as_list/
acts_as_nested_set            http://dev.rubyonrails.com/svn/rails/plugins/acts_as_nested_set/
・・・

一覧の右にあるように、デフォルトでは http://dev.rubyonrails.com/svn/rails/plugins/ に公開されているプラグインのみが対象となります。

プラグインのインストールは、install を使用します。scaffolding プラグインをインストールしてみます。

$ ruby script/plugin install scaffolding
+ ./MIT-LICENSE
+ ./README
+ ./Rakefile
+ ./init.rb
+ ./lib/scaffolding.rb
・・・

プラグインのリポジトリはいっぱいあって、discover -l でその一覧が確認できます。

$ ruby script/plugin discover -l
http://www.agilewebdevelopment.com/plugins/
svn://rubyforge.org/var/svn/expressica/plugins/
http://soen.ca/svn/projects/rails/plugins/
http://technoweenie.stikipad.com/plugins/
・・・

デフォルトに無いプラグインは、そのリポジトリを追加する必要があります(もしくはインストール時にフルパスで指定する)。 Railsによるアジャイル〜 rail2.0版 その1で出て来た pagination プラグインは、デフォルトにはなく、http://tools.assembla.com/svn/breakout/breakout/vendor/plugins/ リポジトリにあります。これを追加します。

$ ruby script/plugin source http://tools.assembla.com/svn/breakout/breakout/vendor/plugins/

sources で現在のリポジトリリストを確認できます。デフォルトの dev.rubyonrails.com と二つあります。

$ ruby script/plugin sources
http://dev.rubyonrails.com/svn/rails/plugins/
http://tools.assembla.com/svn/breakout/breakout/vendor/plugins/

ちなみに、discover を引数無しで実行すると、全てのリポジトリに対して追加するかどうか、Y/Nで答えて、Yならば追加されます。あまり多く追加しすぎるとプラグインの検索に時間がかかるので、必要なものだけにするのがよいかと思います。

また、間違えて登録してしまった場合は unsource リポジトリURL で、リポジトリをリストから除外することが出来ます。詳しくは、 script/plugin -h でヘルプが見れます。

さて、tools.assembla.com を追加したので、もう一度 list で確認してみます。

$ ruby script/plugin list
・・・
classic_pagination    http://tools.assembla.com/svn/breakout/breakout/vendor/plugins/classic_pagination/
・・・
will_paginate         http://tools.assembla.com/svn/breakout/breakout/vendor/plugins/will_paginate/

先ほどより増えているのが分かります。その中にある、classic_pagination と will_paginate をインストールします。

$ ruby script/plugin install classic_pagination
+ ./CHANGELOG
+ ./README
+ ./Rakefile
+ ./init.rb
+ ./install.rb
+ ./lib/pagination.rb
・・・
$ ruby script/plugin install will_paginate     
+ ./LICENSE
+ ./README
+ ./Rakefile
+ ./init.rb
+ ./lib/will_paginate/collection.rb
・・・

とりあえずこれで、scaffold を使う準備ができました。