前回の続きです、今回は FunctionTest から RSpec on Rails に書き変えてみました。 シンプルな置き換え まずは、単純に置き換えてみました。 # todos_controller_test.rb require 'test_helper' class TodosControllerTest < ActionController::TestCase def setup @request.session[:login] = true end def test_should_get_index get :index assert_response :success assert_not_nil assigns(:todos) end def test_should_show_todo get :show, :id => todos(:task1).id assert_re
次の仕事から RSpec を使ってみようかかと思い RSpec on Railsを使ってみました。まずは、勉強にと UnitTest を RSpec on Rails に書き換えてみた。 ドキュメント・参考資料 RSpec-1.1.11: Overview : RSpec ホームページ、英語ですが例が多く実際にSpecを書くのにとても役に立ちます。 Rubyist Magazine - スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編) : 日本語の解説、長いけど一読、二読しよう! Rubyist Magazine - スはスペックのス 【第 2 回】 RSpec on Rails (コントローラとビュー編) : 日本語の解説、長いけど一読、二読しよう! WEB+DB PRESS Vol.45 YugiさんのRSpecの記事 : よくまとまっ
昨年末から、ある小規模(60画面程度)のRuby on Railsを使ったシステムを開発する際に、RSpecを使ってみましたので、その感想などを どこまで書くか 今回は、Model, Library, Helper に対してのRSpecのみ書きました、従来のRailsのUnitTestに相当する部分のみです。 ただし、コントローラーには絶対にロジックを書かないようにし、ロジックは Model, Library に書くようにしましたのでかなりテストは出来ていると思います。 読みやすい RSpecは従来のユニットテストに比べコンパクトに書けるのでテストが読みやすくなります。理由はいろいろとあると思いますが UniTestのassertは assert(期待値, テスト対象のメソッド)とテスト対象が後ろの方にありますが、 RSpec では テスト対象のメソッド.should == 期待値なので、
Cucumberを使って、Railsアプリのテストを高い抽象度で書き進めていくために欠かせないのがWebratというライブラリです。前回のCucumber全体像の紹介に引き続き、こちらWebratを紹介します。今回も長いです。 2008-01-27修正 id:amacouさんから指摘を受けまして(と、たぶんsatokoさんも以前おっしゃってた)webrat_steps.rbの生成先パスを修正。 語: ${RAILS_ROOT}/step_definitions 正: ${RAILS_ROOT}/features/step_definitions ありがとうございます。 今回のまとめ Webratすごい 画面遷移を「リンクをクリックする」「ボタンをクリックする」と書ける リンクのアンカーテキストではまだ日本語が使えず。さきほどパッチ送ったので早晩書けるようになるはず。 フォームの入力項目もラ
仕事で作っているRailsアプリにCucumberを突っ込んでみました。これは熱い。いやもう十分、お客さんに見せて分かってもらえる気がします。たぶん。もちろん準備は必要だし、受け入れ仕様をすべてお客さんに書いてもらうというのは難しいですけど*1。 とりあえず導入はこちらから。最近はNokogiriが必要です。あとTerminal.appで--no-colorつけずに実行するとTerminal.appがひどいことになるのでiTermお薦めです。 http://github.com/aslakhellesoy/cucumber/wikis/ruby-on-rails 2010-11-10 SEO的に。この記事を書いてから2年、いろんなCucumberの使い方を調べました。そのノウハウを達人出版会にて本にまとめました。よろしければこちらもどうぞ。 http://tatsu-zine.com/bo
(6/20 大幅に加筆修正を行いました)Railsのセッションの有効期限は、デフォルトだとブラウザが終了するまでです。これだと、ログインページによくある「ログイン状態を保持する」チェックボックスが作れません。というわけで、やり方を調べてみたら、よさそうな情報がのっているサイトを見つけたので英語の勉強がてら概要を意訳してみたいと思います。 HowtoChangeSessionOptions in Ruby on Rails すべてのセッションに対して一律に有効期限を作りたい場合 environment.rbに下記のように設定します。 ActionController::Base.session_options[:session_expires] = Time.local(2009,"jan") ここでは、上記のように絶対時間を入れます。Time.now + 1.weekのようにするのはうまく
Railsを使っていて自分で直接cookieを設定するという状況はほとんどなく、大抵はsessionをハッシュ感覚で、便利に利用してきた。Rails2.0以降はsessionの保存先はデフォルトでcookieになり、そのまま利用する限りcookieの有効期限は空欄のままなので、ブラウザを終了するまでsessionは保持されることになる。そして、次回ブラウザを起動すると、期限切れのcookie(その中にsessionが保存されている)は削除されている。 ほとんどの場合、上記デフォルト設定のまま使っていたか、またはrestful_authenticationなどに頼りきりだったので、いざ自分でsessionに有効期限を設定しようとした時、苦労してしまった。とても基本的なことであるのに...。 config/environment.rbでの設定 2009-01-01 00:00:00まで有効にし
どっちが良い悪いは無しです。 acts_as_taggable_on_steroidsとacts_as_taggable_reduxのどっちを使うかについて検索するといくつかのブログが出てくるが、最初自分も選び方わからなかった。タグクラウドが簡単に作れるとかで選んでためしに使ってみたという記事が多いみたい。で、実際それだけの差じゃないと思う(や、昨日気がついたんだけどw)ので、以下、どっちを使うか決めかねているときの参考にしてください。 そのまんまだけど、その差は、Tagモデルのtaggings_countとTaggingモデルのuser_idぐらいです。migrationファイルだけ見てると「ふーん」と思ってわかった気になりがちです。でも、ER図にすれば一目瞭然なんで図も起こしました。大きな違いは、user_idだけです。結果、この2つのプラグインは、用途が変わってしまうように思います。
せっかくなので、まとめておきます。 利用しているものは、次のようになっています。 Ruby 1.8.7 Rails 2.1 SWFUpload 2.1.0 restful_authentication Rails2.1上でのSWFUploadとrestful_authenticationの組み合わせは、色々設定しないとちゃんと動いてくれないようです。 まず、rails2.1で使う場合の問題点を列挙します。 CSRF対策がデフォルトで入っている Flashに対してセッションを送れない session_idに改行が入るようになった 値を返さないと、I/Oエラーになる というわけで、まず、 #243653 - Pastie 上記URLのスクリプトを、initializersディレクトリにswfupload_fix.rbのような名前で保存します。これは、Session周りのハックをするスクリプトで
Rails 2.0: Preview Releaseの新機能でわかりやすいところをあげてみる。 scaffoldの変更 まず、scaffoldで作成されるものが変わった。Rails 1.2でscaffold_resourceで作成されるものが2.0では、scaffoldになった。scaffold_resourceでは、RESTfulのコードが作成されていたので、Rails 2.0以降は、RESTfulメインということのようです。 1つのアクションに対して複数のビューが指定できる これも、Rails 1.2で少し出てきていたが、1つのアクションに対して複数のビューを指定できるようになった。 またそのビューごとにテンプレートエンジンを指定できるようになった。 リクエストでは、「(アクション).(拡張子)」と指定できるようになりました。描画形式はhtml、rss、xmlとか、テンプレートエンジン
ブログ再開。 さて、先日Rails 2.2系のmasterに以下の変更がコミットされた。 http://github.com/rails/rails/commit/44a3009ff068bf080de6764a8c884fbf0ceb920e そもそも今までのRailsの map.resourcesは、なんか routes.rbに1行書くだけで勝手にCRUD+αのroutesがうじゃうじゃ生成されて、邪魔くさいことこの上なかった。実際のアプリだと使われるURLの方が少ないぐらいなのに、rake routesの出力を無駄に汚されて不愉快きわまりない. というのを、そういえばちょうど前回の Rails勉強会@東京#34 でも懸命に主張してみたりしたのだが、 REST信者 とかいう人たちには「気にするな」とか言われてまったく取り合ってもらえなくて悲しい思いをしたのだった。 しかしみんなにどん
何気なくTwitterのタイムラインを見ていたら、 wycatsとd2hがMerbがRails3にマージされるというお知らせをしてました。 http://twitter.com/wycats/statuses/1074903497 http://twitter.com/d2h/statuses/1074904219 Rails And Merb Merge Today is a fairly momentous day in the history of Ruby web frameworks. You will probably find the news I’m about to share with you fairly shocking, but I will attempt to explain the situation. Merb gets merged into Rails
クックパッドさん主催のRuby on Railsセミナーに参加してきました。Railsは仕事では利用していないのですが、CakePHPなんかはRailsと似たところがあるし、スケーリングの話なんかは参考になるところもあるかな、と思い参加。CTOの橋本健太さんのトークのみ、という内容だったのですがRailsに留まらない「クックパッドとしてのものづくりに対する考え方」は非常に興味深い内容がふんだんでした。以下、そのメモです。(誤字とかRails系の用語は間違っているものもあるかも、、) クックパッド 毎日の料理を楽しみにすることで心からの笑顔を増やす これだけやる! 世界で一番!生活に役立つサイト作り 月刊ユーザ524万人 四国の人口よりおおい! 20,30代女性中心 20代は4人に1人が見てる! Railsサイト中世界8位(ユーザ数) 月刊PV2.8億 PV的にはRailsサイトで世界3位
濱野智史さんの『アーキテクチャの生態系』を読んでいる途中なのですが、この「アーキテクチャ」の肯定的な捉え方に、RailsとRESTの関係が思い起こされたのでメモを。 濱野さんによる『アーキテクチャの生態系』の紹介はこちら。 アーキテクチャって? ここで呼ばれている「アーキテクチャ」とは、ローレンス・レッシグ『CODE』で説明されていたものです(最近はver. 2.0が出ています)。 レッシグさんは、人の行動や社会秩序をコントロールするためには、4つの方法があると言っています。それは、規範(慣習)、法律、市場、そしてアーキテクチャです。たとえばタバコを吸わせないように人の行動をコントロールするためには、これら4つの方法をどのように使えるでしょうか。 規範(慣習) 人の行動はマナーのような規範で制約することができます。分煙という規範は喫煙者に制約を与えます。もしくは「煙草は体に悪い」という言
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く