Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
OpenStruct 要素を動的に追加・削除できる手軽な構造体を提供するクラスです。 OpenStruct のインスタンスに対して未定義なメソッド x= を呼ぶと、 OpenStruct クラスの BasicObject#method_missing で捕捉され、そのインスタンスに インスタンスメソッド x, x= が定義されます。 この挙動によって要素を動的に変更できる構造体として働きます。 手軽に使える require "ostruct" config = OpenStruct.new config.level #=> nil config.level = :debug config.level #=> :debug
自分がCapybaraで一番ハマったのは、画面の初期化や、Ajaxやアニメーションなどの遅延を待たずに、どんどんclickなどを行おうとして意図しない結果になってしまうこと。 ブラウザから自分で試してみてもうまく行くので、自動テストをうまく行かせるためだけのデバッグ作業となり、作業のための作業、これは無駄以外のなんでもない。腹立たしい。 だから、情報共有。 findで要素が準備OKになるまで待たせる 本家の でも書かれているが、Capybaraにはこういう非同期JavaScriptの問題への対処として、findや、have_content実行時にまだ要素が見つからない場合は、設定した時間(初期値2秒)待ってからリトライをしてくれる。 この機能を使って、clickする、have_xxx で検証するなどの前に、findでちゃんと存在するまでcapybaraに待たせる事が重要。 基本的に非表示要
fill_inメソッド によって、フォーム要素のname, もしくは id, もしくはラベルに、「タイトル」 とあるテキストフィールドを埋めることが出来ます。 問題 フィールドが1つならよいのですが、例えば1対Nの関連だったりして、同じ名前の複数のインプットが有る場合、以下のようなエラーとなります。 Capybara::Ambiguous: Ambiguous match, found 2 elements matching field "タグ"
経緯 Capybara + Turnip を書く時、だいたいこういう Feature になると思います Feature: GitHub を巡る Background: When "https://github.com/login" にアクセスする And ユーザ名に "gongo" と入力する And パスワードに "gongo" と入力する And "Sign in" ボタンをクリックする Scenario: トップ画面 Then アクティビティが表示されていること And 自分のリポジトリ一覧が表示されていること Scenario: Explorer When "Explorer" をクリックする Then "Browse interesting projects" と表示されていること Scenario: Blog When "Blog" をクリックする Then "The GitH
Testing Rake tasks is one of the most painful things I do as a Ruby developer. Even after extracting all the code out into a separate class (which helps a lot), I still want to make sure I test that the right classes got called correctly with the right arguments. I wanted the subject to be the task, where I could call invoke, check its prerequisites, etc. describe "cron:hourly" do its(:prerequisit
Rake 0.8.0 is released. The docs have not been updated yet, but I didn't want to delay the new version for that. We will get the documents up to date shortly. http://rubyforge.org/forum/forum.php?thread_id=20544&forum_id=20061 Rakeの新しいバージョンがリリースされた。まだ新しいドキュメントが出てきていないのだが、こういうページを作る程度にはRakeが好きなので、待ちきれずに使ってみた。 いくらか嘘をついているかもしれない。わからない部分もある。ドキュメントがリリースされ、正しい情報がわかり次第修正していく予定。 追記:Rake 0.8.2がリリースされたので、また
BUNDLED WITH って何? bundler 1.10.0 以降で作成された Gemfile.lock では、BUNDLED WITH というセクションがあって、使用された bundler のバージョンがトラックされるようになっている [3485] 。 例えば bundler 1.9.0 で作成された Gemfile.lock のあるプロジェクト上で、 最新の bundler 1.10.3 を使用して bundle install --path vendor/bundle すると、 Gemfile.lock には以下の差分ができる。 これをもう一度 1.9.0 で bundle install すると、上の文字はきれいさっぱり消える。 BUNDLED WITH の何が困るか 多人数で開発するときには、この変更は微妙に邪魔で、意図しない Gemfile.lock 変更が出てしまうことで
Rails4だとCSRF対策が非常に優秀です。 デフォルトで「ApplicationController」には「protect_from_forgery with: :exception」の記述があります。 CSRFの仕組みについては以下の記述が参考になります。 ★RailsのCSRF対策の仕組みについて http://shindolog.hatenablog.com/entry/2014/09/01/013840 また、「protect_from_forgery」については以下の記述が参考になります。 ★Rails 4.0だとCSRFトークンでエラーになる http://qiita.com/naoty_k/items/b40b13735fd7f06f8cb7 そしてこちらですが、安易な「a」タグや外部のサイトからの接続の際に「Can't verify CSRF token authent
Railsはprotect_from_forgeryって書くだけでCSRF対策が有効になってマジ便利なわけだけど、セッションで認証するんじゃなくてiOSから呼ぶAPIとかでトークン使って認証する場合はCSRFの対策いらないので無効にしたい。 その場合は protect_from_forgery with: :null_session ってすればいいらしい。これはCSRF Tokenが一致しなかった場合に例外を投げるんじゃなくてセッションを空にするという動作になる。 ちなみにprotect_from_forgeryのデフォルトは:null_sessionなので protect_from_forgery でもよさそう(Rails 4.0.0現在) ただし最初は以下のようになってるので明示的に変更する必要はある。 class ApplicationController < ActionContr
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く