<< >>

2006-02-24 優しいRailsの育て方

複数のRails環境

えっと、複数のRails環境を用意する方法ですが、単に最新版の trunk を使うだけの場合は

% rake freeze_edge

とやるのだと思いますが、好みに応じて複数のバージョンを使い分けたかったり、trunk が手元にある場合にわざわざまた取得するのも冗長だったり、ということで、私は生々しく手作業でやっています。

Rails スクリプトの実行のメカニズム

Rails スクリプトの実行のメカニズム的には、

% ruby script/XXX

が実行されると、まずスクリプト(から呼ばれた config/boot.rb)内で、

"#{RAILS_ROOT}/vendor/rails"

があるかどうかがチェックされます。存在すれば、その下の Rails パッケージ(activerecord, ...) が利用され、存在しなければ、システムにインストールされているパッケージが利用されます。これだけなので、結論から言うと、

「vendor/rails を好きなバージョンのパッケージへの symlink にする」

ことで簡単に切り替えられます。(削除すればいつでもシステム標準に戻る♪)。但し、現在の初期化のメカニズムになったのは 0.14 (多分)からだと思うので、0.13系ではこの方法は使えません。

あっと、念のために正確に言っておくと、vendor/rails/ 以下のパッケージではなく、vendor/rails/railties/lib/initializer.rb からの相対パス(../../*)にあるライブラリが利用されます。従って、例えば activerecord のソースをちょっといじって実験したい、なんてときに、各ライブラリは symlink にして、activerecord だけファイルをコピーしてきて修正してたりすると、どんなに頑張って修正してもそのファイルは無視されてしまうので注意が必要です。

残念な例

vendor/rails/
|-- actionmailer@      # -> ~/rails/svn/testing/actionmailer
|-- actionpack@        # -> ~/rails/svn/testing/actionpack
|-- actionwebservice@  # -> ~/rails/svn/testing/actionwebservice
|-- activerecord
|-- activesupport@     # -> ~/rails/svn/testing/activesupport
`-- railties@          # -> ~/rails/svn/testing/railties

我流

これで終わりなんですが、一応、私が今やっている方法を紹介しておきます。まず、適当な Rails 置き場(面倒なので ~/rails/svn/ 固定)を準備して、そこに trunk を落とします。

trunk ゲット

% cd ~/rails/svn/
% svn co http://dev.rubyonrails.com/svn/rails/trunk

後日また最新版に更新したくなったときに差分で済むように、export でなく co がよいでしょう。

現在のファイル構成

~/rails/svn/
  + trunk/

次に、co したときに表示されたレポジトリ番号の名前で trunk をコピーしておきます。もう番号を忘れちゃったよ!という鳥頭さんは、trunk 内で svn info するとよいでしょう。ということで、早速実行します。(お前かよ!)

リビジョン番号確認

% cd trunk
% svn info
リビジョン: 3630

忘れないように 3630 と呟きながら、急いで置き場に戻ってコピーします。

リビジョン番号でコピー

% cd ~/rails/svn/
% cp -pr trunk 3630

と、これは通常の使い方で、今回のように trunk にも含まれてないパッチを当てたりする場合は、混乱を避けるためにパッチを意味する 'p' を suffix してます。

パッチ当てる場合

% cp -pr trunk 3630p

現在のファイル構成

~/rails/svn/
  + 3630p/
  + trunk/

ついでにパッチ置き場も作って、パッチを落とします。

パッチの準備

% cd ~/rails/svn/
% mkdir patches
% cd patches/
% wget http://dev.rubyonrails.org/attachment/ticket/3913/cascaded_eager_loading.patch

現在のファイル構成

~/rails/svn/
  + 3630p/
  + patches/
     + cascaded_eager_loading.patch
  + trunk/

パッチを当てます。

パッチを適用

% cd ~/rails/svn/3630p/
% patch -p0 < ../patches/cascaded_eager_loading.patch

で、まだ動くかどうか怪しい最新版には testing の汚名をつけておきます。

最新版を testing と名付けておく

% ln -s 3630p testing

現在のファイル構成

~/rails/svn/
  + 3630p/
  + patches/
  + testing@   # --> 3630p
  + trunk/

時間があればテストもやってみましょう。各モジュール直下の RUNNING_UNIT_TESTS に詳しい手順が書いてありますが、るびま0004が日本語なので楽ですね。中央付近の「ActiveRecord の確認」に詳しく載っています。

http://jp.rubyist.net/magazine/?0004-RubyOnRails

今回は ActiveRecord に怪しいパッチを当てたので、ActiveRecord をテストしてみます。るびまの通りにDBは作成しているとして、

Gems な人のテスト

% cd ~/rails/svn/testing/activerecord/test/
% rake

多分、Gems な人(普通の人)はこれだけでテストが実行されると思います。非 Gem なパラノイアはコマンドを明示して実行する必要があります。

非Gemsな人のテスト

% ./all.sh "connections/native_mysql"

ピンポイントでテスト

% ruby -I "connections/native_mysql" associations_cascaded_eager_loading_test.rb 

テストも終わって、いよいよメインですが、最初に書いたように、Railsアプリケーションの vendor/rails を好きなバージョンに向けるだけです。とりあえず、今の testing バージョンを利用してみましょう。

testing バージョンを利用する

% cd ~/rails/apps/special-sample/vendor/
% ln -s ~/rails/svn/testing rails

ちゃんと動いてるようなら stable に昇格させてあげましょう。ついでに、アプリケーション側も stable へリンクを変更しておきます。逆に問題があった場合は、testing を消して stable に戻しましょう。

最新版を stable に変名しておく

% cd ~/rails/svn/
% rm stable && ln -s 3630p stable

現在のファイル構成

~/rails/svn/
  + 3630p/
  + stable@    # --> 3630p
  + testing@   # --> 3630p
  + trunk/

stable バージョンを利用するように変更

% cd ~/rails/apps/special-sample/vendor/
% rm rails && ln -s ~/rails/svn/stable rails

現在のファイル構成

~/rails/apps/special-sample/vendor/
  + plugins/
  + rails@     # --> ~/rails/svn/stable

すると、また1週間もしないうちに楽しそうな機能が trunk に追加されますので、同じ作業をやって testing と stable を更新することになります。こうやって、~/rails/svn/xxxx にどんどん各バージョンの rails が増えていきます。これが trunk 無限地獄です。(消せよ)。

年末に消したのにまた増えてきた図

% tree -L 1 ~/rails/svn/
~/rails/svn/
|-- 3383p/
|-- 3438p/
|-- 3595p/
|-- 3618p/
|-- 3621p/
|-- 3623p/
|-- 3630p/
|-- patches/
|-- stable@      # -> 3623p
|-- switchtower/
|-- testing@     # -> 3630p
|-- tmp/
|-- trunk/
`-- workings/

以上です。って、ち、違うわよ。べ、別にあなたのために調べたんじゃないからね!前からまとめようと思ってたんだから。勘違いしないでよね。

参考

本日のツッコミ(全2件) [ツッコミを入れる]

_ akausagi [ツンデレなくまの人にちょっと萌えた。]

_ 从 ’w’) [近寄らないで!(が実はツンデレだったら最高に萌えるの数→(1/20))]


2007-02-24

[℃-ute] ℃-ute デビュー単独コンサート2007春 〜始まったよ!キューティーショー〜

どうせお前らは、はずかむ、おはスタ、デビューCDも好調で「℃-ute始まったな」感が高まる中での℃-ute初コンにJUMPするほど喜んでマイマイに片想いしてるんだけど、As ONEの生ファルセットを聞いちゃうとやっぱり愛理へのENDLESS LOVEが芽生えてしまい、脳内で即抱きしめながらYES!しあわせ絶頂なお前らなんだけど、中盤の非持ち歌ゾーンはわっきゃない曲が多くて、タイムカプセル状態でテンションが落ちかかってるところでまさかのキューティーガールズ登場にお前らの桜はチラリしちゃって、さらに初単独コンに向けて努力するメンバーを見守るnkskちゃんの大きな愛を目の当たりにしたお前らは、みかんあげるから俺ももてなしてケロ!とか思いながらも、やっぱり最後はまっさらブルージーンズ!とアラカンと一緒に叫んでラビン!ラビン!ラビン!ラビン!しちゃうんだろう?とか言ってw

セットリスト

120 :名無し募集中。。。 :2007/02/24(土) 17:56:06.62 0
    01.JUMP ℃-ute
    02.EVERYDAY YEAH! 片想い ℃-ute
    03.As ONE ℃-ute
    MC ℃-ute
    04.ENDLESS LOVE〜I Love You More〜 ℃-ute
    05.即 抱きしめて ℃-ute
    06.YES!しあわせ ℃-ute
    MC 萩原舞・岡井千聖・鈴木愛理
    07.SHALL WE LOVE? 有原栞菜・中島早貴・矢島舞美・梅田えりか
    08.会えない長い日曜日 萩原舞・岡井千聖
    09.サヨナラのLOVE SONG 鈴木愛理
    10.【メドレー】
     乙女 パスタに感動 萩原・有原・矢島・梅田→℃-ute
     ミラクルルン グランプリン! ℃-ute
     ちょこっとLOVE 岡井・鈴木・中島
    VTR
    11.わっきゃない(Z)  ℃-ute
    12.タイムカプセル ℃-ute
    13.桜チラリ ℃-ute
    14.大きな愛でもてなして ℃-ute
    15.まっさらブルージーンズ ℃-ute 

KPT

Problem

項目内容
台詞「あと何十分かで終わっちゃいますが・・・」とかnkskちゃんだけ反感を買うような台詞が多い(*1)
ネタ小学生コントのネタがちょっとシュール杉
非持ち歌知らない曲多い。ベリと本体は?
栞菜の握手相手の目を見るんだ。がんばれ!
握手会史上最速。コンサートだけでいいよ。というか、りーたんのアンコール返して!
大もて最後のオクターブ上げていくやつは微妙。最後の一回だけ煽ればよし

(*1) よみうりでも「違ーーーぅ!」でスペジェネを止める役だし

Keep

項目内容
キューティーガールズ必須。むしろこれだけでもいいくらい。ルミネで7-23時ぐらいでやるのも可
日替わりMCMCのトーク内容を変えるのは嬉しい。ベリはここを見習うべき
VTR他グループが出てくるコントVTRは楽しい。次はベリと絡む方向で
nkskチェック星明子さんばりにメンバーを見守る役、あるいはストーカーとして
煽りわっきゃない、大もて、まっさら

Try

項目内容
nkskちゃんソロ始まったな感がある確変少女を放置いくない。上手さより今が旬の娘に歌わせるんだ!
非持ち歌ベリと本体のメジャーな曲を是非。よみうりが伏線でスッペとザ・ピースが来ると予想
公演数増初コンのご祝儀相場とは言えオクが高い。関東で10公演くらいよろしく
クリアファイル梅さんに偏ってない?4枚買って3梅さんとか。ん、梅しかったの?w
キッズコンキッズ合同コンは狼の総意。熊井ちゃんとナッキーのデュオとか絶対泣くんだから!

参考


2008-02-24

第25回フェブラリーステークス(GI)

3連単予想なんて甘い!この8連単の1点読みで勝負したい。配当は2億くらいでお願いします>JRA様。

予想

順位馬番馬名予想
104フィールドルージュ実力、体調、調教に死角なし
209メイショウトウコンJCDの好走とダートの安定性から
-16ワイルドワンダー完走したら3着。でも根岸Sのダメージで競走中止しそう><
310ブルーコンコルド去年2着の実績。年齢的な衰えも感じない
415ヴァーミリアン実力No1も調教不足で3着争い。馬体重が増加してなければ本命
513ビッググラス去年3着の実績も、やや力の衰えあり
607ドラゴンファイヤー調教不足。安勝マジックに期待
705クワイエットデイ年齢的にそろそろ厳しい
808ロングプライドペリエパワー

実際問題、3連単しかないので、4-9-10 (700倍)に1kいってきます。あとビッググラスが不当に人気ない(最下位)のが凄い。複勝(20〜30倍)に1k入れとく価値は十分ある。

参考

本日のツッコミ(全2件) [ツッコミを入れる]

_ shachi [おいらは4-9-15-16で玉砕。 先にここ見ていれば10も買えたのに....しょぼん。]

_ 舞波 [まさかワンダーでなくて僕のルージュちゃんが競争中止とはー]