ラベル Ruby on Rails の投稿を表示しています。 すべての投稿を表示
ラベル Ruby on Rails の投稿を表示しています。 すべての投稿を表示

2011年3月23日水曜日

Rails2のドキュメント

Rails3がリリースされてから公式サイトのRailsのドキュメントがRails3のものに変わってしまった。



でもRails2のドキュメントも残っていた。

Ruby on Rails Documentation
Modified: Thu Aug 19 22:56:35 +0000 2010

2011年2月4日金曜日

Railsで 422エラー

アンケート - %!zt! diary (2008-06-28)
The change you wanted was rejected. Maybe you tried to change something you didn't have access to.

cookieを拒否した場合もこのエラーが出るらしい

2010年9月21日火曜日

Railsの select_yearヘルパーのリファレンス

Module: ActionView::Helpers::DateHelper
# Generates a select field for years that defaults to the current year that # has ascending year values select_year(Date.today, :start_year => 1992, :end_year => 2007)

Railsの機能かー

Rubyの GetTextにおけるN_()メソッドとは

N_()の使いかた(再) - よたらぼ(2008-07-07)
N_()は実は何もしないメソッド。rgettext(poファイル抽出時)にそれが翻訳対象文字列であることを伝えるためのメソッドで、実際の翻訳はsay_hello_world内の_()で行っている。

複数形の翻訳かと思った。

2010年8月27日金曜日

Railsのテストの結果を緑とか赤にして見やすくする

Windowsでテスト結果を見やすくする - Slow Dance
gemからインストールできます。

gem install redgreen


このgemを使うと、テストで「.」(=通過)には緑、「F」は赤で表示されるようになります。便利ですね。

色を着けたいだけというシンプルな要求にシンプルに答えてくれるGemで嬉しい。
シェルの背景色が白(文字色が黒)ならインストールするだけで十分見やすい。

2010年8月26日木曜日

Railsのテストで assert_not_select()

こんな感じでいいんじゃないかな。
def assert_not_select(css_selector, text, message = nil)
  assert_select(css_selector, {:text => text, :count => 0}, message)
end

どうかな?
属性値を?でテストする場合にはダメか。でも属性値のテストならこれを使わなくても正規表現でなんとかなりそうな気もする。

Railsの View以外で h()を使う方法

Rails の便利メソッド h, html_escape は ERB:Util にあった | METAREAL
render :text => ERB::Util.html_escape(params[:value])

View(ERB)以外でHTMLエスケープする方法。なるほど。
ERB::Util.h()でもOK。

Railsの functinalテストで使う assert_tagは deprecatedらしい

Rails / Testing - WhyNotWiki
Don't use it. It's deprecated in 1.2 in favor of assert_select.

どうりで検索してもあまり見つからわいわけだ。

Fw: ActionMailerのユニットテストの書き方

POSTORO: ActionMailerのユニットテストの書き方
このサイトくらいしか見つからなかった。このサイトが参考にしたらしいサイトはリンク切れ。
あとは公式リファレンス見て調べるか。

ってFromヘッダーのテストの仕方が分からない。
toと同じようにfromをとろうとするとfalseだし、どうするんだろ?実際には送ってないからfalseでいいのかな。でもそれではテストではない。

続 ActionMailerのテストの書き方

Class: ActionMailer::Base
deliveries - Keeps an array of all the emails sent out through the Action Mailer with delivery_method :test. Most useful for unit and functional testing.

あ、やっぱりdeliveriesを使うのが正道なんだ。

ActionMailerのユニットテストの書き方

お手軽なActionMailerのテスト方法 - satoko's blog - s21g
# テスト時に配送したメールの配列を保存する。
ActionMailer::Base.deliveries = []

このサイトくらいしか見つからなかった。このサイトが参考にしたらしいサイトはリンク切れ。
あとは公式リファレンス見て調べるか。

2010年8月25日水曜日

eager loadingとは

eager loadingって何? - おもしろWEBサービス開発日記
tasksテーブルに入っている列の数だけクエリが生成することになり、パフォーマンス的に大変よろしくありません。先にprojectsテーブルからもデータを取得しておけば、クエリの発行回数を減らすことができます。この、「先にデータを取得しておく」ことを eager loading というらしいです。

こんな機能があったんだ。

でも本当に使いたいところで使いこなすにはRailsのソースに深く潜り込まなくちゃいけないかも。それならSQLかそれに近いコードを書いちゃったほうが速い場合が多いからなあ。

Railsでテストを書くときの指針の参考に

Railsでテストを書く勘所 - moroの日記
で、そこでRailsとTDD(BDD)の話なんかしたので、一週間で思ったことをつらつらと。たぶん不正確というか、理解の足りないところもいろいろあるので、そのへんのツッコミをいただけると感謝です。

RSpecが念頭に置かれているが、「伝統的な」Railsのテスト機能でも参考になる。

Rubyで使える assert系メソッド一覧

Test::Unit - Rubyリファレンスマニュアル
各 assertion の最後の引数 message はテストが失敗したときに表示される メッセージ

assert_not_equalはあるのに、assert_not(あるいはassert_false)は無いんだー

Railsで URLエンコードする方法いろいろ

Ruby on RailsでURLエンコード・デコードする
Ruby on RailsでURLエンコード・デコードする

URIを使う方法と、ERB::Utilを使う方法と、CGIを使う方法。
URIの場合、内容によっては第2引数が必要(参考:RailsのURLエンコード方法 - おもしろWEBサービス開発日記、Ruby On Rails ピチカート街道 - rubyでURLエンコード -)。

2010年8月24日火曜日

Railsの Fixtureで 省略したときに自動で振られるIDは

ラベルの文字列のハッシュらしい。

Foxy fixtures (Rails 2.2.2)
ただ、一つ気になっていたのは、idが85969009とか、巨大な整数になることです。しかし、今日知ったのですが、これはラベルの文字列のハッシュだったんですね。これは、実に便利で、この例は
'Rosaceae'.hash.abs -> 85969009 なのですが、(私のシステムの場合ですが)
Family.find('Rosaceae'.hash.abs)と書けるわけです。

なるほど。

Railsのテストで Fixtureで作ったデータを簡単に呼び出す方法

Class: Fixtures
Alternatively, you may enable auto-instantiation of the fixture data. For instance, take the following tests:

test "find_alt_method_1" do
assert_equal "Ruby on Rails", @web_sites['rubyonrails']['name']
end

test "find_alt_method_2" do
assert_equal "Ruby on Rails", @rubyonrails.news
end

In order to use these methods to access fixtured data within your testcases, you must specify one of the following in your ActiveSupport::TestCase-derived class:

* to fully enable instantiated fixtures (enable alternate methods 1 and 2 above)

self.use_instantiated_fixtures = true

* create only the hash for the fixtures, do not ‘find’ each instance (enable alternate method 1 only)

self.use_instantiated_fixtures = :no_instances

self.use_instantiated_fixturesの設定が必要。データが多いとパフォーマンスに影響があるみたい。

Railsの Fixtureでは関連のあるモデルを YAMLのラベルでも指定できる

Class: Fixtures
Add a few more monkeys and pirates and break this into multiple files, and it gets pretty hard to keep track of what‘s going on. Let‘s use labels instead of IDs:

### in pirates.yml

reginald:
name: Reginald the Pirate
monkey: george

### in monkeys.yml

george:
name: George the Monkey
pirate: reginald

ID自動生成した場合(YAMLにIDを書かないと981023448とか自動生成される)、どうやって関連付けるのかと思ったらラベルを指定すれば、いい感じに処理してくれる。
「pirate_id: 1」の代わりに「pirate: ラベル」という風に書く。

via Rails の fixtures の書き方を整理してみる

Railsの Fixtureの YAMLには Rubyのコードもかけるらしい

Class: Fixtures
Some times you don‘t care about the content of the fixtures as much as you care about the volume. In these cases, you can mix ERb in with your YAML or CSV fixtures to create a bunch of fixtures for load testing, like:

<% for i in 1..1000 %>
fix_<%= i %>:
id: <%= i %>
name: guy_<%= 1 %>
<% end %>

これは使えるかも

2010年8月23日月曜日

Rails 2.3では テストのassert_validは使えない

assert_valid in unit tests after upgrade to rails 2.3 doesn't work - Ruby on Rails: Talk | Google グループ
It was deprecated at 2.2.2
- "assert_valid is deprecated. Use assert record.valid? instead"

代わりに assert(object.valid?)しろと。まあ確かに文字数はそれほど変わらず、分かりにくくもない。むしろassert_validの存在が冗長だったのか。

既にあるテストに対してはassert_validヘルパを自作して対応。

ブログ アーカイブ

カテゴリー