標準の yum リポジトリには git はないのでリポジトリを追加する。
以下のURLを参考にしました。

AdditionalResources/Repositories/RPMForge - CentOS Wiki


% sudo yum install yum-priorities

% sudo vi /etc/yum/pluginconf.d/priorities.conf

[main]
enabled = 1
priority = 5

内容に priority 行を追加。とりあえず5ぐらいでいいのかな。

サーバーは i386 なので以下をダウンロード
% wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.i386.rpm

dagのGPG-KEY をインポート
% sudo rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt

ダウンロードした rpmforge パッケージをチェック
% rpm -K rpmforge-release-0.5.1-1.el5.rf.i386.rpm
rpmforge-release-0.5.1-1.el5.rf.i386.rpm: (sha1) dsa sha1 md5 gpg OK

rpmforgeをインストール
% sudo rpm -i rpmforge-release-0.5.1-1.el5.rf.i386.rpm

% yum check-update
Loaded plugins: fastestmirror, priorities

wikiの記述とは違うけれど、priorities をロードしたからOKのようだ。

% yum search git
Loaded plugins: fastestmirror, priorities
================================= Matched: git =================================
git.i386 : Git core and tools

見つかりました。

% sudo yum install git

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
git i386 1.5.2.1-1.el5.rf rpmforge 27 M
Installing for dependencies:
perl-Error noarch 0.17016-1.el5.rf rpmforge 28 k
perl-Git i386 1.5.2.1-1.el5.rf rpmforge 18 k
subversion-perl i386 1.6.6-0.1.el5.rf rpmforge 2.3 M
Updating for dependencies:
subversion i386 1.6.6-0.1.el5.rf rpmforge 6.5 M

Transaction Summary
================================================================================
Install 4 Package(s)
Update 1 Package(s)
Remove 0 Package(s)

インストール完了

% git --version
git version 1.5.2.1
# cat /etc/redhat-release
CentOS release 5.4 (Final)

gitのパッケージをyumのリポジトリに追加しようと思ったところ、ディストリビューションのバージョンを忘れてしまっていたので確認したかった。
netbeansからヘルプをみても参照しているjdkがどこなのかpathがわからない。
インストール時にはjdkのディレクトリを指定できるのだが、なにかおかしい。

とりあえず調べてみたらこんなコマンドを使っている記事をみつけた。

# sudo /usr/sbin/update-alternatives --config java

さっぱり何をやっているのかわからないけれど、java のデフォルトを指定できるようだ。
とりあえずメモだけ。あとで勉強しよう。
Ruby のインタプリタのバージョンが1.8.6のままだったので1.8.7にアップデートする。
既存の環境がどうやってインストールしたか忘れてしまったのが少し問題か。

#とりあえずportで試してみる。

% ruby --version
ruby 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0]

% sudo port -d selfupdate
% sudo port -d sync
% port search ruby

ruby @1.8.7-p174 (lang, ruby)
Powerful and clean object-oriented scripting language

ruby186 @1.8.6-p368 (lang, ruby)
Powerful and clean object-oriented scripting language

ruby19 @1.9.1-p243 (lang, ruby)
Powerful and clean object-oriented scripting language

% sudo port install ruby
---> Fetching ruby
---> Attempting to fetch ruby-1.8.7-p174.tar.bz2 from ftp://ftp.iDaemons.org/pub/mirror/ftp.ruby-lang.org/ruby/1.8
---> Verifying checksum(s) for ruby
---> Extracting ruby
---> Applying patches to ruby
---> Configuring ruby
---> Building ruby
---> Staging ruby into destroot
---> Installing ruby @1.8.7-p174_0+thread_hooks
---> Activating ruby @1.8.7-p174_0+thread_hooks
Error: Target org.macports.activate returned: Image error: Another version of this port (ruby @1.8.7-p72_3+thread_hooks) is already active.
Error: Status 1 encountered during processing.

#エラーがでてしまいました。別のイメージが既に入っている?というように読めるので確認してみます。

% port installed ruby
The following ports are currently installed:
ruby @1.8.7-p72_3+thread_hooks (active)
ruby @1.8.7-p174_0+thread_hooks

#やはりありました。activate を変更。

% sudo port activate ruby @1.8.7-p174_0+thread_hooks
---> Activating ruby @1.8.7-p174_0+thread_hooks
Error: port activate failed: Image error: Another version of this port (ruby @1.8.7-p72_3+thread_hooks) is already active.

#同じエラーのようです。アップデートする方向に方向転換。

% sudo port uninstall ruby @1.8.7-p174_0+thread_hooks
---> Uninstalling ruby @1.8.7-p174_0+thread_hooks

% port installed ruby
The following ports are currently installed:
ruby @1.8.7-p72_3+thread_hooks (active)

% sudo port upgrade ruby
---> Deactivating ruby @1.8.7-p72_3+thread_hooks
---> Installing ruby @1.8.7-p174_0+thread_hooks
---> Activating ruby @1.8.7-p174_0+thread_hooks
---> Cleaning ruby

% port installed ruby
The following ports are currently installed:
ruby @1.8.7-p72_3+thread_hooks
ruby @1.8.7-p174_0+thread_hooks (active)

#うまくいきました。

#次はruby のパスを変えます。

% which ruby
/usr/bin/ruby

% /opt/local/bin/ruby --version
ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin9]

#port でインストールしたので /opt/local 以下にあります。

% echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/mysql/bin:/opt/local/bin:/opt/local/sbin:

#Pathは通っているので /usr/bin/ruby を無効にする。

% sudo mv /usr/bin/ruby /usr/bin/ruby1.8.6
% which ruby
/opt/local/bin/ruby
% ruby --version
ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin9]

#できました。

##次はrubygemsのインストール。

#確認してみる。

% gem --version
1.3.5

% port installed rubygems
None of the specified ports are installed.

#port ではインストールされていないようです。バージョンは下がってしまいますが gems も ruby 同様に port で管理したいです。

% port search rubygems

rb-rubygems @1.3.4 (ruby, devel)
a package management framework for Ruby

Found 4 ports.

% sudo port install rb-rubygems
---> Fetching rb-rubygems
---> Attempting to fetch rubygems-1.3.4.tgz from http://distfiles.macports.org/ruby
---> Verifying checksum(s) for rb-rubygems
---> Extracting rb-rubygems
---> Applying patches to rb-rubygems
---> Configuring rb-rubygems
---> Building rb-rubygems
---> Staging rb-rubygems into destroot
---> Installing rb-rubygems @1.3.4_0
---> Activating rb-rubygems @1.3.4_0
---> Cleaning rb-rubygems

#Pathを変更します。
% which gem
/usr/bin/gem
% /opt/local/bin/gem --version
1.3.4
% sudo mv /usr/bin/gem /usr/bin/gem_for_1.8.6
% which gem
/opt/local/bin/gem
% gem --version
1.3.4

#うまくいきました。あとは新しいgemに必要なパッケージを入れていくだけですね。
hash配列の中の存在しないキーを指定した場合の戻り値のデフォルトは nil です。
nil 以外にする場合は、hash配列の作成時にデフォルト値を指定します。

maze = Hash.new(0)

これでデフォルトの返却値は 0 になります。
開発環境のMac OS X(10.5/Leopard)で、Rails 2.3.3をインストールしようとしたところ、gem updateで失敗したので環境を再考。

% gem list
% sudo gem update

Updating rmagick
Building native extensions. This could take a while...
ERROR: While executing gem ... (Gem::Installer::ExtensionBuildError)
ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb update
checking for Ruby version >= 1.8.5... yes
checking for gcc... yes
checking for Magick-config... no
Can't install RMagick 2.11.0. Can't find Magick-config in /bin:/usr/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby


Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/rmagick-2.11.0 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/rmagick-2.11.0/ext/RMagick/gem_make.out

#ImageMagickとrmagickを手で入れたことで、めんどくさくなってしまったのを反省。
#portでパッケージ管理する方向へ変更。
% sudo port -d selfupdate
% sudo port -d sync
% sudo port search imagemagick
% sudo port install ImageMagick

#portで管理されていないImageMagickが検出される。
Error: Target org.macports.activate returned: Image error: Another version of this port (ImageMagick @6.4.9-6_0+q16) is already active.
Error: Status 1 encountered during processing.

#portにまかせたいので、アンインストールするが、既存のrmagickと依存関係にあるとエラー。
% sudo port uninstall ImageMagick @6.4.9-6_0+q16
---> Unable to uninstall ImageMagick 6.4.9-6_0+q16, the following ports depend on it:
---> rb-rmagick
Error: port uninstall failed: Please uninstall the ports that depend on ImageMagick first.

#rmagick, ImageMagickをアンインストール
% sudo port uninstall rb-rmagick
---> Deactivating rb-rmagick @2.9.0_0
---> Uninstalling rb-rmagick @2.9.0_0

% sudo port uninstall ImageMagick @6.4.9-6_0+q16
---> Deactivating ImageMagick @6.4.9-6_0+q16
---> Uninstalling ImageMagick @6.4.9-6_0+q16

#rmagickをportでインストール。ようやく成功。
% sudo port install rb-rmagick

---> Activating ImageMagick @6.5.4-9_0+q16
---> Cleaning ImageMagick
---> Fetching rb-rmagick
---> Verifying checksum(s) for rb-rmagick
---> Extracting rb-rmagick
---> Configuring rb-rmagick
Warning: wmf2eps is not installed, some RMagick examples will fail.
Warning: gs is not installed, some RMagick examples will fail.
---> Building rb-rmagick
---> Staging rb-rmagick into destroot
---> Installing rb-rmagick @2.9.0_0
---> Activating rb-rmagick @2.9.0_0
---> Cleaning rb-rmagick


#あらためてgem update, やっとできました。
% sudo gem update
Updating rmagick
Building native extensions. This could take a while...
Successfully installed rmagick-2.11.0

よくつかうメソッドの nil? empty? blank? のまとめ。

nil? すべてのオブジェクトにある。nilのときにTrueを返す。
empty? 文字の長さが0のとき、配列が空のときにTrueを返す。

blank? railsの拡張。nil, "", " ", [], {} のいずれかでTrueを返す。
新しくアクションをRoute.rbに追加したもののヘルパーメソッドがなんていう名前で生成されるかわからなかった。

#routes.rb
map.resources :users, :member => { :move_higher => :put, :move_lower => :put }

とした場合、生成されるヘルパーメソッドは

move_higher_users_path

になります。PUTメソッドなので単数系です。

参考に以下。

Method | URL | Action | Helper
GET /users index users_path
GET /users/:id show params[:id] user_path
GET /users/new new new_user_path
GET /users/:id/edit edit params[:id] edit_user_path
POST /users create
PUT /users/:id update params[:id] user_path
DELETE /users/:id destroy params[:id] user_path

[action]_[resource]_path と言う形で生成されるみたい。
routes.rb への登録の意味がよくわかってなかったんだけれども少しわかってきた。
routes.rb にリソースを登録すると、URLが /:resource/:id(/:action) で表現できるっていうことらしい。

先生の説明によれば、
:resource -> 名詞
:method -> 動詞
:action -> 副詞

なるほどこれがRESTか。少しわかった。
Tab Mix Plus と ツリー型タブ(Tree Style Tab) の組み合わせで、タブを閉じたときのフォーカスがうまく動かない。

環境は以下
Firefox 3.0.7
Tab Mix Plus 0.3.7pre.081003
Tree Style Tab 0.7.2008120401

  • Tab Mix Plus の設定

    • タブを閉じた場合に、閉じたタブの左のタブにフォーカスする

  • Tree Style Tab の設定

    • タブバーを右に表示する


上記のようにしているのだが、タブを閉じてもフォーカスが上に移ってくれない。
タブバーを下に表示した場合は、左に行くようになる。

人気のないカスタムだと自覚しているので自分で解決していくしかないかなと思っています。

もし、何か解決策や他のAddonsなどのオススメがあれば教えてください。