Ruby

Ruby on Railsアプリ以外でも Selenium RC を使えば RSpec でテストが書ける!

RSpec のテストを記述するDSLとしては素晴らしさは、 Selenium RC と組み合わせる事で Ruby on Railsアプリ以外でも使えます。Selenium は Javascriptを使いWebアプリのテストを行うツールとして有名ですが、Selenium RC を使うと RSpecで書いたテストを Web…

Request SpecでJavascriptのあるページをテストする方法、 Capybara + Selenium, Capybara + Akephalos など

先日リリースした 萌えトーク ではEnd-to-Endテストには Request Spec + Capybara を使っていますが、Javascriptの部分は適当なヘルパーメソッドを使いJavascriptを動作させずにテストしましたが、Capybara のドライバーを selenium や Akephalos (HTMLUnit)…

Capistrano で簡単に複数サイトへのデプロイを行えるようにする

Capistrano で複数サイトへのデプロイを1つの設定ファイルで行える事を最近知ったので書いておきます。 Webシステムでは本番環境以外に最終確認の為のStaging環境を持つことが多いと思います、Staging環境は本番環境とは別のサーバーだったり、同じサーバー…

Ruby on Rails 2.x と 3.x 両方で rspec-rails が競合する問題の解決方法

現在、 Ruby on Rails 3.x と 2.x 両方のプロジェクトを1台のマシンで開発・メンテナンスしていいる開発者もいると思いますが、その際に RSpec 正確には rspec-rails や email-spec のバージョンが競合を起こす事があります。 解決方法は幾つかあるようです…

Request Spec, Steakで使う Capybara DSL の情報、サンプル

先日リリースした 萌えトーク ではEnd-to-Endテストには Request Spec を使っていますが、テスト(RSpec)を書くには Capybara DSL (API) の知識が必要になります。 萌えトーク の Request Spec を書く際に参照した情報、サンプルをまとめておきます。 Capybar…

声優さんとスカイプで会話できる【萌えトーク】オープンしました !

ここ2ヶ月で開発した、萌えトーク がオープンしました !!萌えトーク は、声優さん(現在はAGC38のメンバー)とスカイプのチャットでお話(レッスン)が出来るサービスの 予約を行うサイトです。 今なら、1トーク(25分) が無料ですので、アニメ好き・声優好きの方…

メールを含むテストもEmail Spec で楽々

Webシステムではメールをユーザー送り、メール内のURLクリックで処理を行うようなケースも間々あります。そんなプログラムの受け入れテスト、End-to-Endテストを行うには Request Specs や Steak に Email Spec で簡単に書けます。Email Spec は Rails の Ac…

Steak を Request Specs + Capybara に変更してみた

WEB+DB PRESS Vol.61の 「Rails 3テスト最前線」を読み Steak を使わなくても RSpec 2.0 の新機能 Request Specs と Capybara を組み合わせる事で Steak 同様にテストが書ける事が判ったので試してみた。 Steakに付いては、ここWEB+DB PRESS Vol.61作者: 西…

話題のテストツール Steak を勉強してみた

以前 Ruby on Railsの達人 @a_matsuda に 薦められた テストツール Steak を現在開発中のプロジェクトで使ってみようと思い、勉強してみました。 Steakとは Steak は Cucumber 同様に Ruby on RailsなどのWebアプリの受け入れテストや総合テストのツールです…

Rails 3 で RDBに書かれる時間を日本時間にするには

現在 Ruby on Rails 3.0 であるサービスを作っていますが、 Rails 2.X と違い RDB に書かれる時間が UTC (協定世界時) でかかれます。 国際対応する予定のアプリならこれで良いのですが、日本向けのサービスの場合はメンテナンス性を考えると RDB には日本時…

Radiant-CMS の独自拡張機能を作る

EY-Officeのホームページ作成を Ruby on Rails製CMS Radiant を使う事にしました で予告した、Radiantから静的ページの作成し、公開サーバーへの転送する拡張機能に付いて書きます。この拡張機能は上の画像のように Radiant のメニューに Deploy というタブ…

EY-Officeのホームページ作成を Ruby on Rails製CMS Radiant を使う事にしました

今まで、EY-OfficeのホームページはHTMLを直接書いていまいたが、コンテンツ強化のためにCMSを使おうと思い立ち調査したところ Radiant が良さそうだったので導入してみました。 Radiantに付いて 良い点 Ruby on Rails で出来ている !! GitHub を見ると開発…

本番環境の確認用に rake db:fixtures:delete を作った

みなさんは rake db:fixtures:load を使ってますか? test/fixturesにあるテストデータを開発環境DB(正確には現在の環境のDB)に読み込むrake taskです。この操作の取り消す rake db:fixtures:delete を作りました。 私は、テストデータを次の目的で使っていま…

multi_db を使ったアプリのテスト(RSpec)を書く方法

開発中のシステムでは multi_db を使ってMaster/Slave型のRDB負荷分散を行っていますが、こういうアプリでRSpecを書くのは一筋縄ではいきません。Master/Slave型のRDB負荷分散を行うシステムではRDBへのinsert/updateはMaster-DBにのみ行い、selectはSlave-D…

Ruby on RailsでMySQLに画像を格納する

訳あって、Ruby on RailsでMySQLに画像を格納し使う実験をした。 migrationでの指定 画像を格納するカラムは migration では binary を指定します。ただし、そのままでは 64Kbyteまでしか格納出来ない blob型になってしまいます。これを mediumblob型にする…

Rails 3.0 で Session用Cookieの httponly属性を外す方法

Cookieのhttponly属性を外す方法 - From a Far East Islandを Rails 3.0 で試したところエラーになってしまったので、調べたところconfig/initializers/session_store.rb ファイルにある RailsBooks::Application.config.session_store :cookie_store, :key …

Passenger 3.0 にアップグレードした

EY-Officeの開発・教育用に使っているサーバーの Passenger (Ruby on Rails実行環境)を 最新の3.0にし、性能も測ってみました。 インストール インストール手順は従来通り sudo gem install passenger sudo passenger-install-apache2-moduleですが、passeng…

RSpecでsend_fileの送信するファイルの内容をテストする方法(修正版)

コントロラーのRSpecを書いていて send_file の response が上手くテスト出来なかったので調べてみました。ただし調べたのは Rails 2.3.8 , Rspec Rails 1.3.3 です。@irohirokiさんから ActionController::TestProcess#binary_content を使えば良いですとTw…

個人的なRubykaigiのKPT

筑波で行われた日本Ruby会議2010に参加して来ました。参加した私自身のKPTを書いておこうと思います。 Keep 企業スポンサーになった! ここ! 、 あまり儲かってないEY-Officeにとって10万円はとても大きな金額でかなり迷いました。しかし、結果としてスポン…

Cucumber を0.4.3から0.8.3 にバージョンアップしてみました

プロダクトで使っているCucumber ですが、バージョンアップしていませんでしたので未だ 0.4.3 でした。昨日少し時間が出来たので 0.8.3 にバージョンアップしてみました。 バージョンアップ方法 Rails関連の追加ソフトをバージョンアップする方法ですが以下…

CodeZine に ObjectiveResourceの記事を書きました

CodeZine に iPhoneアプリとRuby on Rails の連携を超簡単にする ObjectiveResource の記事を書きました。注意 現在ObjectiveResourceは iOS4.0 に対応できてないようです。 詳しくは こちら iPhoneアプリとRuby on Rails両方に通じている方は少ないと思いま…

Ruby on Railsで作った、お客様のネットショップがオープンしました!

昨年から始めた、お客様の ボロライディングショップ がネットショップとしてオープンしました。 乗馬に興味のある方もない方も、ぜひアクセスしてみて下さい。 サイトは、当然 Ruby on Rails で作られています、さらにテスト関連には RSpecやCucumberを使っ…

Rails 2.3.5 対応。 やっぱりテスト期待値にid を書くのは危険

先日リリース Rails 2.3.5がリリースされたので開発中のアプリをバージョンアップしてみました。 リリースノート にあるように2.3.5は基本的にはセキュリティー、バグ対応がメインで大きく変わったところは無いようです。バージョンアップですが、アプリ側の…

Railsでのhttp/https切り換えはには実行環境に依存する部分もある

現在、開発しているWebアプリではプライバシーを扱う一部のページのみ httpsで実行し、それ以外の大部分のページは httpなので、httpからhttpsへの遷移や httpsからhttpへの遷移があります。Ruby on Railsでは http から https へ遷移する リンクやは下のよ…

CucumberでJavascriptを含むページをテストする事を考えてみた

昨日も書きましたが、Cucumber は 内部で Webrat を使い、生成されたHTMLをチェックしたり、ボタン・リンクの動作をシミュレーションしています。 したがって、Javascriptを使ったページはテスト出来ません。 しかし、テストしたいページにJavascriptが使わ…

Cucumber は :delete %> をハンドリング出来る

Cucumber は 内部で Webrat を使い、生成されたHTMLをチェックしたり、ボタン・リンクの動作をシミュレーションしています。 したがって、Javascriptを使ったページはテスト出来ません。 Railsで削除等には 'Are you sure?', :method => :delete %> というタ…

(::)な方、添削願います!

今回書いた、featureとstepsのうち一部をさらしました。 既にCucumberを使っている方 添削、ご意見をお願いいたします m(__)m feature フィーチャ: お客様登録なしの買い物 Shopでの買い物が正しく行えるようにする お客様とShop経営者 ちゃんと商品が買える…

Cucumber を実際のプロダクトに入れてみた

現在開発中のネットショップのテストに Cucumber を使ってみました。やはり、実際のプロダクトに入れるとサンプルで試してみた時になかった問題が次々と発生し、楽しかったです (::) (::) 発生した問題と対応 ラベルがない! Cucumberのシナリオは "名前"に"…

ViewのRSpecを書いてみた

現在ネットショップを作っているのですが、やや複雑なビジネスロジックを持っています。当然モデルはRSpecを書いて仕様の確認(テスト)しているのですが、開発中に注文の確認画面の表示がおかしい問題がよく発生しました。View自身はモデルやヘルパーの呼び出…

rspec-rails-1.2.9 から spec_server が 別gem になりました

rspec,rspec-railsを1.2.9にバージョンアップし spec_server を使おうとしたところエラーが発生してテストできませんでした。調べてみたら 1.2.9 から spec_server は無くなり、代わりに spork というgemを使うようにと リリースノートに書かれてました。spo…