タグ

ブックマーク / kennyj-jp.blogspot.com (2)

  • spec実行時にdb:test:prepareを呼び出したくない。

    ■概要 (激しく既出感ありですが。。)何年もrailsやってますが、正しく理解できていなかった事の一つに rake spec(test)すると、処理の一環としてdb:test:prepareタスクを呼び出す という挙動があります。 通常問題にならないのですが、db:test:prepareが、db/schema.rbの情報を元にデーターベースを作成する為、railsが認識できないような項目は抜けて落ちてしまいます。 関数適用したインデックス トリガーやファンクション 別スキーマに作ったオブジェクト ...etc なので RAILS_ENV=test rake db:drop RAILS_ENV=test rake db:create RAILS_ENV=test rake db:migrate してからrake specする事を前提に、db:test:prepareを呼び出さずにspecを

  • capybaraをwebkitやseleniumとかで動かす場合の注意点と解決策

    ■概要 capybaraとwebkit(たぶんselenium)を利用する際は、capybara側がブラウザとやりとりする為のスレッドを立ち上げる為 RSpec.configure do |config| ... config.use_transactional_fixtures = false end してfixtureのトランザクション制御をあきらめる必要があります。これでは少し都合が悪いので、 DatabaseCleanerを利用して代用する等行う必要があります。 ところがrailsコアチームのjosevalim氏が解決策をぼそっとつぶやいてました。実際にやってみると上手く動くだけでなく実行速度がかなり改善されました。 ■解決策 つぶやきで紹介されている方法は非常に簡単です。 spec_helper(test_helper.rb)で下記の用に追記しましょう。 RSpec.config

  • 1