maeshimaの日記

メモ書きです

rails

controllerでエラー発生時のテストをしたいとき

エラー発生時に500ページを表示するようなテストを書きたいときに、デフォルトだとrspecがエラーを横取りしてしまってうまくいかない。spec中に下記のように書いておくと横取りを防げるみたい。 rescue_action_in_public! # 昔の書き方。今はdepricated # co…

今週のrailscasts - making generators in rails 3

http://railscasts.com/episodes/218-making-generators-in-rails-3を見て。Rails3になって変わったgeneratorの作り方について。 基礎 内部でthorを使うようになった。 rails g generator hoge で hoge generator のひな形を Rails.root/lib/generators 配下…

helperのテスト

helperメソッドを使うと、describeの引数で設定したヘルパーモジュールのインスタンスにアクセスできる。インスタンス変数 @hoge に "fuga" を入れてテストしたい時は下記のように assign メソッドを使う assign[:hoge] = "fuga"

今週のrailscasts - Multistep Forms

Railscasts - Multistep Formsを見て。formの内容が多くて複数ページに分割する場合のtips。 基本的な流れ それぞれの input 部分を partial templateにする ページ毎に名前を付けて配列で格納 render :partial => "" の部分を session で切り替える session…

RSpec Machers

RSpec Matchers | Teach Me To Codeカスタムマッチャの定義についての上記のサイトを見て。下記のような感じで定義できるみたい。 Spec::Matchers.define :contains do |element| match do |container| container.include? element end end describe Array d…

今週のrailscasts - Generators in Rails 3

Railscasts - Generators in Rails 3 rails g scaffold --help とするとオプションがみれる。 rails g scaffold --no-stylehseets とすると、デフォルトtrueなstylesheetsオプションをオフに出来る。rails g xxx としたときにinvokeと書かれたgeneratorが実…

passengerのBundler support

2.1.12からBundlerをサポートするようになった模様。 アプリをロードする前に Rails.root/.bundle/environment.rb を require する 上記ファイルがなければ、自動でBundler.setup()を実行する(Gemfileがあれば) config.ruやconfig/boot.rbよりも前にrequire…

rinariコードリーディング rinari-root

143-151行。default-directory(カレントディレクトリ?)から始めてconfig/environment.rbが見つかるまでディレクトリを上に上がって調べてる。 (defun rinari-root (&optional dir home) (or dir (setq dir default-directory)) (if (file-exists-p (expand-…

config.gemのlibオプション

rails 2系でrspecを使う時には下記のように書くらしいけど、:lib => falseがよく分からないので調べた。 config.gem "rspec", :lib => false 下記を見ると、rakeタスクなどで使うgemで普段はloadしたくないようなgemに設定するオプションみたい use :lib => …

今週のrailscasts - Advanced Queries in Rails 3

Railscasts - Advanced Queries in Rails 3を見て。今週のrailscasts - Active Record Queries in Rails 3 - maeshimaの日記の続き的な内容。 to_sql 前も書いたけどto_sqlメソッドがすばらしい。 クラスメソッドとscopeの組み合わせ 引数とるタイプのscope…

今週のrailscasts - A/B Testing with A/Bing

A/B Testing とは どっちの文言の方がコンバージョン率が高いのか知りたいときにするテスト。ユーザによって文言を切り替えてアクセス統計をする→コンバージョン率の高い方を採用するマーケティングテスト。 google website optimizer railsに特化してない …

これまでのrspec本勉強の復習

これまでメインアカウントのブログでrspecについて書いてきたことを復習して気になったところを簡単にまとめてみた。 ?を末尾に持つメソッドの書き換え receiver.hoge?.should == true は下記のようにも書ける receiver.should be_hoge receiver.should be_a…

rinariコードリーディング 1 - 100行くらい

elispの勉強と、railsコーディングの効率化を目的としてrinariのコードを読んでいきたいと思います。rinari.el自体は728行とたいしたボリュームではないのですが、lisp超初心者なので全部読むには時間がかかると思います。一日三十分くらいでできれば毎日少…

webrat代換プラグインcapybara

webratがまだrails3に対応してないので、対応してるっぽいcapybaraとやらをいれて使ってみた。 rails g cucumber:skeleton --capybara でセットアップできるjnicklas's capybara at master - GitHub

今週のrailscasts - Calendars

Railscasts - Calendarsを見て。日付の入力と出力に使えるプラグインの紹介。 日付の入力 jquery のプラグイン Datepickerの紹介。テキストフィールドへの日付の入力時にカレンダーがポップアップしてくれる。 日付の参照(google calendar風) 複数日にイベン…

サブドメインを使ったRailsアプリを作成するときに気をつけること

良く忘れるのでメモ。session cookie の domainを設定しておくこと。そうしないとサブドメイン間でsessionの共有が出来ない。 Rails.application.config.session_store :cookie_store, { :key => '_hoge_session', :domain => "example.com" }

今週のrailscasts - Validations in Rails 3

Railscasts - Validations in Rails 3を見て。 gem cleanup gem cleanup で古いgemを削除できる。 エラーメッセージ エラーメッセージ系のメソッドがプラグインとして切り出された。動画内ではエラーメッセージをpartial view化することで対応していた。 ren…

ArgumentErrorが大雑把

Ruby の例外クラスは分類が粗すぎる or 細かすぎる - まめめもを読んで。ブクマ代わりのエントリ。 引数の個数が間違っているとき 引数の中身が不正なとき 1以上の整数じゃなきゃダメとか 再帰しているArrayがダメとか がいっしょくたにArgumentErrorを吐く…

machinistの復習

fixture代換プラグインMachinistの使い方 - おもしろWEBサービス開発日記の復習。忘れてた or 気になったところを再度メモ Shamのブロック引数 Shamのブロック変数にはインデックス番号が入る Sham.name {|index| "Name #{index}" } make_unsaved saveしたく…

Array#rand

これは便利。 require "activesupport" puts ["hoge", "fuga"].rand #=> hogeとfugaのどちらかがランダムに表示される 追記 Array#rand is deprecated and will be removed in Rails 3. Use "random_element" instead さらに追記 Array#random_element is de…

Railsレシピブック Recipe 48 - 58

Railsレシピブック Recipe 1 - 17 - maeshimaの日記 Railsレシピブック Recipe 18-28 - maeshimaの日記 Railsレシピブック Recipe 29 - 47 - maeshimaの日記の続き。ActiveRecord編その1。 find 引数に配列を指定できる。 Blog.find([1,2,3]) new_record? …

今週のrailscasts - Introducing Devise

Railscasts - Introducing Deviseを見て。rackベースの認証ソリューションプラグインdeviseについて。rails engineを使ってMVC全部のサポートをしてくれるみたい。migrationのメソッドもオーバライドしてる。 self.up create_table(:users) do |t| t.databas…

rails2と3でのcontent_forの挙動の違い

正確にはcontent_forを使わなかった時の挙動が2と3で違う。 <title><%= yield(:title) || "default title" %></title> のようにして、viewにてcontent_for :titleをしなかったときに、Rails 2だとdefault titleになるがRails 3だとタイトルが空白になる

DBをリセットするrakeタスク二つ

いつもDBをリセットしたいときは rake db:migrate:reset としていたのだけど、 rake db:reset というrakeタスクもあるらしい。違いが良くわからなかったのでざっくり調べた。 db:migrate:reset rake db:drop rake db:create rake db:migrate と同じっぽい(未…

今週のrailscasts - ERB Blocks in Rails 3

Railscasts - ERB Blocks in Rails 3を見て。Rails3のviewでのブロックの使い方が変わったという話。 変更点 blockをとるメソッドで=いらなかったのが必要になった Rails 2 <% form_for @users do |f| %> <% end %> Rails 3 <%= form_for @users do |f| %> <…

Railsレシピブック Recipe 29 - 47

Railsレシピブック Recipe 1 - 17 - maeshimaの日記 Railsレシピブック Recipe 18-28 - maeshimaの日記の続き。ActionControllerの章の終わりまで。 filter after_filterの使いどころについては前調べて書いたafter_filterの使いどころ - maeshimaの日記 fil…

renderとredirect_toどっち使えばいいのか

create, update等のアクションでrenderを使うのとredirect_toを使うのとどっちがいいかについての考察。自分以外の人が見てもわからないかもしれません。 scaffold的なアプリの場合はrenderでいいと思う(エラー時のエラーオブジェクトをそのまま使えるから楽…

今週のrailscasts - Syntax Highlighting

Railscasts - Syntax Highlightingを見て。 シンタックスハイライト用のプラグイン CodeRay Ultraviolet pygments 早さもこの順番みたい。特にpygmentsは遅いので、もしつかうならcacheをうまく使うといいらしい。 CodeRayの使い方 あんまりしっかり見てない…

after_filterの使いどころ

今までafter_filterをまともに使っていなかったけれど、そもそもどういう状況で使うのかいまいちわかってなかった。after_filter for replacing text | Railsvibesを読むと、renderした後のresponse.bodyを書き換えてクライアントに送る用途でafter_filterを…

今週のrailscasts - Action Mailer in Rails 3

Railscasts - Action Mailer in Rails 3を見て。 作り方 rails g mailer hoge これまでとは違い app/mailers 配下にひな形が作られる 使い方 mail(:to => email, :subject => "subject", :from => "hoge@hoge.com") 下記のようにすればデフォルトの値を宣言…