Railsをプロジェクト内に取り込む
Rails自体をプロジェクト内に取り込む
Railsはシステムワイドにインストールして使うのが一般的だと思いますが、インストールされてるRailsのバージョンを気にしたり、ある日突然バージョンアップによって動かなくなったりするのを気にしたりしたくないので、プロジェクト内にインストールして使うようにしてみました。
こうしておくと、rubyがインストールされたシステムであれば、チェックアウトするだけですぐに動かす事ができるようになります。
rubygems をインストールする
"$TOPDIR/vendor/gems" にインストールします。
ドキュメントは必要ないのでインストールしません。
ruby setup.rb --prefix=$TOPDIR/vendor/gems --no-rdoc --no-ri
インストールした gem コマンドは直接は実行しないのですが、いちおう shebang を /usr/bin/env 経由で実行するように書き換えます。
vim $TOPDIR/vendor/gems/bin/gem
#!/usr/bin/env ruby
gem コマンドのラッパーを $TOPDIR/bin/gem に作ります。
環境変数 "$GEM_HOME" で rubygems がインストールされたディレクトリを指定します。
ruby の "-I" オプションで rubygems のライブラリのディレクトリを指定します。
今後はこれを実行する。
mkdir $TOPDIR/bin
vim $TOPDIR/bin/gem
#!/bin/sh
BIN_DIR=$(cd $(dirname $0); pwd)
TOP_DIR=$(dirname $BIN_DIR)
VENDOR_DIR=$TOP_DIR/vendor
GEM_DIR=$VENDOR_DIR/gems
GEM_HOME=$GEM_DIR /usr/bin/env ruby -I $GEM_DIR/lib \
$GEM_DIR/bin/$(basename $0) $*
ついでに ruby コマンドのラッパーも作る。
#!/bin/sh
BIN_DIR=$(cd $(dirname $0); pwd)
TOP_DIR=$(dirname $BIN_DIR)
VENDOR_DIR=$TOP_DIR/vendor
GEM_DIR=$VENDOR_DIR/gems
GEM_HOME=$GEM_DIR /usr/bin/env ruby -I $GEM_DIR/lib $*
Railsをインストール
$TOPDIR/bin/gem を使って Rails をインストールします。
ドキュメントは必要ないのでインストールしません。
ドキュメントは大量にできるので、コミットすると大変な事になります。
最初ドキュメント込みで svk 使ってたら死にました。orz
$TOPDIR/bin/gem install --env-shebang --no-rdoc --no-ri rails
rails, rake コマンドのラッパーを作る。
$TOPDIR/bin/gem を汎用的に作っているので、シンボリックリンクをはるだけでおk。
ln -s gem $TOPDIR/bin/rails
ln -s gem $TOPDIR/bin/rake
プロジェクト開始
$TOPDIR/bin/rails コマンドでプロジェクトを開始する。
$TOPDIR/bin/rails $TOPDIR
動作確認
$TOPDIR/bin/ruby $TOPDIR/script/server
動いた!!\(^o^)/
今回はWebrick経由なので問題なく動いたけど、fcgi経由とかだと dispatch.* 辺りを調整しないとダメなはず。
その辺はまたやる。