紳士なブログ

紳士すぎてすみません

Rails

findメソッドに:joinsオプション指定したときの:readonlyオプションについて

findメソッドに:joins指定したときのreadonlyオプションについて なんとなくは理解にとどまっていたので、今更ながら調べてみる。 activerecord-2.3.12/lib/active_record/base.rb 611 def find(*args) 612 options = args.extract_options! 613 validate_fi…

IntegrationTestにリファラをセットする方法

フレームワークはTest:Unit。 FunctionalTestは既知だったけどIntegrationTestは無知だった。 FunctionalTest @request.env['HTTP_REFERER'] = '/donuts/new' post :create, :donuts => { ... } assert_redirected_to 'donuts/new' IntegrationTest post :cr…

timestampsの自動更新をやめてみる

Railsでのtimestampsの自動更新の正確な挙動を知りたくなったので確認してみた。 activerecord-2.3.12/lib/active_record/timestamp.rb module ActiveRecord module Timestamp def self.included(base) #:nodoc: base.alias_method_chain :create, :timestam…

ActionViewのselectメソッドのソースコード読んでみた

普段Ruby on Railsを利用しているのですが、その中にあるActionViewについて実はあまりよくわかっていなかったので、ソースコードを読んでみました。Railsのバージョンは少し古くて2.3.12ですm(_ _)mselectメソッドの引数は、method, choices, options, html…

RailsでテンプレートエンジンのSlimを使ってみる

Rails環境でテンプレートエンジンのSlimを使ってみる。Slim -A Fsst, Lightweight Templating Engine for Ruby前々から気になってはいたんだけど、昨日のRuby会議で@hsbtさんも利用してたので早速使ってみることに。ちなみに環境はこんな感じ。 Ruby 2.0.0-p…

Rails4.0導入してみた

まだ正式リリースされていないので4.0.0.beta1です。 ➜ ~ gem install rails --version=4.0.0.beta1 Fetching: i18n-0.6.4.gem (100%) Successfully installed i18n-0.6.4 Fetching: multi_json-1.7.0.gem (100%) Successfully installed multi_json-1.7.0 F…

ActiveRecord::Base.find

よくお世話になっているくせにRailsのfindメソッドのコードを初めて読んだので、メモ。 activerecord-2.3.2/lib/active_record/base.rb def find(*args) options = args.extract_options! validates_find_options(options) set_readonly_options!(options) c…

extract_options!

お馴染みextract_options!メソッドですが、正確なコードを忘れてしまっていたので備忘録としてメモ。module Arrayで定義されているのが個人的に面白いと感じたり。 Rails : 2.3.2 module ActiveSupport module CoreExtensions module Array module ExtractOp…

モンキーパッチの防止(Rakeの場合)

Rubyは動的言語であり、メタプログラミングを駆使すれば魔術のようなこともできる。一方で、一歩間違えればコードの複雑性が上がり、可読性が下がってしまう危険性があるどころか、思わぬ挙動を引き起こしてしまうこともある。 テストを必要十分に書くという…

ActiveRecord::AttributeMethods

明けましておめでとうございます。本年もよろしくお願いいたします。 新年早々、ActiveRecordのコードを読んでいて書き方が勉強になったので、今後の参考にメモしておきます。(ソースコードはこちら) ちなみに、もともとはinstance_method_already_impleme…

ruby script/runnerのお話

以前ruby script/runner関連で意味不明なエラーが出たのでちょっと調べてみました。 今の自分にはわからないことが多かったので、雑多にまとめてみようと思います。 「RailsアプリでActiveRecordを使ったバッチ処理 その2」 http://higelog.brassworks.jp/?p…

Ajaxの概観

ここ最近、何回かAjaxを扱う機会があり、理解が不十分だと感じることがあったのでまとめてみます。 Ajaxとは Ajaxという言葉の最初の「A」の部分は、「Asynchronous」、つまり「非同期」という意味です。 Ajaxのメリット Ajaxのメリットとしてよく語られてい…

link_toとrender :locals

link_to ●link_toの第2引数にはhref属性になるリンク先URLを生成するためのパラメータを指定します。URL生成のパラメータはurl_forメソッドと同じものになります。 ●URLとして渡す際には文字列として渡されます。オブジェクトなども文字列として渡されるため…

test実行時のエラー

ArgumentError : wrong number of arguments (1 for 2) 引数の数がおかしいとのこと 参考(そんなに参考にならないけど): http://nyon2.net/archives/2008/01/ruby-on-rails-1.html ActiveRecord::StaleObjectError Rails2.3.2に以降になって出るようにな…

libディレクトリのファイル

libディレクトリのファイルを変更した場合、変更を反映させるためには一度サーバを再起動する必要がある 直接的にはあまり関係はありませんがlibディレクトリについては、以下の記事が多少参考になります。 http://d.hatena.ne.jp/haraguroblog/20081112/122…

empty?とblank?の違い

empty?とblank?はなにが違うのか。けっこうよく見かけますがいっこうに覚えられないので、この機会にまとめておきたいと思います。 .empty?(Rubyのメソッド) 文字の長さが0のときtrue .empty?の場合nilだったときは普通にエラーがでます You have a nil ob…

will_paginateでのページ送り

初めて使う機会があったので、いろいろと情報収集してみました。 参考になったエントリーをリストアップ。 http://higelog.brassworks.jp/?p=50 http://d.hatena.ne.jp/elm200/20080501/1209636980 http://www.katawara.com/2008/will_paginate_usage/ http:…

DBの内容を複数ページに分けて表示する

paginateメソッドを使えば、簡単にページ送りを実現できます。たとえば、テーブルの各レコードをページ送りで分割することを考えます。 次のように指定すると、entriesテーブルの各レコードを作成順(:order => "created_on")でページ送りすることになりま…

多対多の関連

多対多の関連をDBで表現するには、関連のあるテーブルにちょJavaScript苦節外部キーを定義するのではなく、両者への外部キーを持った結合テーブルを用意する Railsでは、このような関連を表現する方法として、has_many :through宣言と、has_and_belongs_to_m…

labelタグの話

labelタグとは labelは、フォームの中で、フォーム部品とラベルを関係付けるために用いる。 ラベルを明示することにより、ブラウザでラベルをクリックした時や、ラベルのアクセスキーを押した時に、その部品をクリックしたのと同じ動作をさせることができる…

destroyとdelete

ActiveRecord::Baseのdestroyメソッドやdestroy_allメソッドは、内部でモデルオブジェクトをロードし、各モデルオブジェクトのdestroyメソッドを呼び出している。 メリット 各種コールバックが利用できる。 デメリット 逆に、大量のレコードを一気に削除した…

Railsのバージョンを指定してアンインストールする方法

コマンドプロンプトで、 gem uninstall rails --version 3.0.9のように入力し、 Successfully uninstalled rails-3.0.9と出れば無事にアンインストールが完了します。 そのあと、試しに、 rails -vと入力して確認してみるとよいでしょう。 私の場合、もとも…

Railsのインストール方法

今回はRailsのインストール方法です。Windows限定です。 以下を参考にしました。とても簡単…のはずです。Macだとけっこう手こずるけど(-_-;) http://www.rubylife.jp/railsinstall/rails/index1.html ただし、バージョンを指定してインストールする場合はち…