rails
昨日ログを出力するように変更したrailsを使って、ほとんど素のrails3のアプリでサーバの起動、GETリクエストx3、サーバの停止までにActionDispatch::Reloaderの各メソッドがどのように呼びだされるのか、developmentとproductionの場合それぞれについて出力…
だんだん、ソースコードを読むだけではしんどくなってきたので、ちょっとずるをします。先日rails new --devの使い方を書きましたが、 http://d.hatena.ne.jp/akm/20120110#1326216516railsの調査用のコードを入れまくって、ブログに書こうとおもって、fork…
$ git clone https://github.com/rails/rails.git $ cd rails/ $ git branch -r $ git checkout 3-2-stable $ cd .. $ ruby rails/railties/bin/rails new rails3_20120110 --devこれでcloneしたリポジトリの(3-2-stableブランチ)を参照するrailsアプリが生…
昨日は、ActionDispatch::Reloader で使われている ActiveSupport::Callbacks のドキュメントを読みました。今日はそれが ActionDispatch::Reloader でどう使われているのかを追いかけたいと思います。 https://github.com/rails/rails/blob/3-1-stable/acti…
昨日はRails::Applicationの継承関係をはっきりさせて、初期化のあたりをどうなっているのかRails Guideのドキュメントをみつけてわーいってところまで行きました。 Rails::Railtie <|---- Rails::Engine <|---- Rails::Applicationhttp://guides.rubyonrail…
Railsのdevelopmentモードのように特定のディレクトリ以下のソースコードを適切なタイミングで読み直す機能を作りたいのですが、実際Railsって何やっているのか分からんので調べます。 cache_classes railsアプリの config/environments/development.rb には…
rails-3.1 いえーい!っていうわけでついついcoffee scriptを使ったんだけど、ステージング環境のRedhatにデプロイしてみたら、画面上で動くはずのJSが動かない。 見てみるとapplication.jsの中身が throw Error("ExecJS::RuntimeUnavailable: Could not fin…
Railscasts #186 で紹介されているpickleが素晴らしい http://railscasts.com/episodes/186-pickle-with-cucumberこんな風にモデルのデータを定義できたりする https://github.com/akm/pickle_sandbox/blob/master/features/display_products.feature Featur…
http://github.com/akm/selectable_attr_railsselectable_attr( http://github.com/akm/selectable_attr )をrailsで使うためのgemであるselectable_attr_railsがじつはruby-1.9系で動いていなかったので、動くようにしました。最近、ちゃんとメンテできてい…
ややこしい経緯でmongo_mapperを使い続けて来たけど、rails3への移行ができたので、mongoidへ移行することにした。でもこれまでKVSを何個か渡り歩いてassociation周りの使い方が違っていることが多く、ちょっと心配だったのでテストを書いてみた。 http://gi…
deviceをインストールしたUserの構造を、 http://gist.github.com/11849 のメソッドを使って出力してみました。 >> User.tree_ancestors [C] User [M] Devise::Models::Trackable [M] Devise::Models::Confirmable [M] Devise::Models::Validatable [M] Devi…
タイムアウトするまでの時間を指定したくなった。でもどこで設定していいのかわからない。Rubyのクラスの構造を逆ツリーで出力するスクリプトを以前書いたので、それを使って調べてみる。 http://gist.github.com/11849 $ irb -rubygems # クラス構造を調べ…
cassandra_objectでは、associationメソッドを使って、belongs_to, has_manyに当たるものを宣言します。 http://github.com/NZKoz/cassandra_object/blob/master/test/fixture_models.rbよくよく見てみると、関連のためのFKのようなカラムの定義がありません…
http://github.com/akm/cassandra_object_rails3 に、http://github.com/NZKoz/cassandra_object のtest以下のモデルをrails3.0アプリとして動くようにしました。 ただし、shouldaがまだrails3対応が終わってないみたいなので、 http://github.com/akm/cassa…
昨日はテクニック中心の話になっちゃってたけど、一番やるべきことを書いてなかった。RailsやRubyに限った話じゃないけど、何かを拡張するものを作るなら、その対象のソースコードを読むこと。
developmentモードとproductionモード 今日チームのメンバーに聞かれて気付いたことですが、developmentモードが便利過ぎるからか、リクエストが来るたびにコントローラのクラスがロードされるように勘違いする人もいるみたいです。プラグインを作るときには…
schema_comments 0.1.2 rake タスクを実行するとdeprecatetionのwarningが出ていたので修正しました。 http://github.com/akm/schema_comments/tree/0.1.2 selectable_attr 0.3.11 警告などのメッセージをSelectableAttr.loggerを使って出力するようにしまし…
なんだか変な時間に起きちゃったので、ちょっとメモ。gemで一発で入るものはこれで、最新は1.8.4 http://gems.rubyforge.org/gems/delayed_job サイトはここ http://github.com/collectiveidea/delayed_jobこちらは、capistranoのレシピもあってデーモンで動…
http://github.com/akm/selectable_attr_rails お恥ずかしい話ですが、gemcutterに移行したにも関わらず古いgemへの依存が残っていたので、gemcutterでのselectable_attrへ依存に直しました。
http://d.hatena.ne.jp/akm/20090918#1253272048 でご指摘いただいたgemでインストールした場合のrakeタスクですが、完璧に抜けてました、すみません。gemインストールでもrakeを使えるようにして、0.1.1としてリリースしました。 http://github.com/akm/sch…
http://www.scribd.com/doc/2589535/Handling-LongRunning-Tasks-in-Rails に10コくらいまとめて書いてあるけど、結局のところbjを使えって結論らしいっす。でも去年の4月のだから要注意いや、こっちの方がすばらしくよくまとまってる。今年11月のだし http:…
0.1.0をリリースしました。 http://github.com/akm/ar_finder_form/tree/0.1.0findやpaginateのオプションを組み立てるフォームを作るためのものです。ずっと前にプラグインとしてだけ作ったものでしたが、仕事で使おうとしたら作りが気に入らなかったので作…
The :joins option now implies :readonly, so if you use this option, saving the same record will now fail. :joinsを指定したfindで取得したオブジェクトの更新がこれまでなかったからか全然知りませんでした。こういう場合は代わりに:includeを使うの…
Bullet ? Help you reduce the number of queries with alerts (and growl). Rails Indexes ? Rake tasks to find missing indexes. Scrooge ? SQL query optimizer, so you query for only what your page need 3つのプラグインが紹介されているけど、3つ…
トランザクションの制御をロールバックを呼び出すんじゃなくてトランザクションの外側から再度例外のハンドラ(例外を指定したイベント)で処理を進めるようにしました。 $ sudo gem install state_flowで入ります。READMEを更新してないけど、使い方はおんな…
状態遷移を書くためのプラグイン/gemなんですが、0.1.0は本能の赴くままに書いてたんですが、実際やっぱUMLちっくな方が分かりやすいので、UMLのステートチャート図と対応するようにほとんど0から作り直しました。詳しくはこちら。http://github.com/akm/sta…
create/update時にモデルの差分をDBに記録してくれるライブラリであるvestal_versions http://github.com/laserlemon/vestal_versions/これだけでも「いつ何がどう変更されたか」というモデルの変更履歴を記録していくことができますが、これにmagic_usersta…
先日userstampを作り替えてモデル内でuserstampの定義をしなくてもオッケーって感じにしました。今度はそれをgemで使いたくなったのですが、中身を大きく作り替えちゃったんで、userstampという名前で僕がgem作っちゃまずいかなと思って別の名前にしてみたわ…
先ほど0.1.0をリリースしました。 StateFlowとは? 状態遷移のためのDSLを提供するためのActiveRecordを拡張するプラグインです。 Railsで非同期処理のためにステータスに関する記述をする際に便利です。こんな感じの記述が可能です。 class Page < ActiveRe…
どのスレッドで実行された処理なのかを追いかけたくて書いてみました。