btoメモ

なんか適当に書く

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 コマンドのラッパーも作る。

vim $TOPDIR/bin/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.* 辺りを調整しないとダメなはず。

その辺はまたやる。