ヘッド有りブラウザーで動きみたいときもある。

$ brew install chromedriver
# test/test_helper.rb:
Capybara.register_driver :chrome do |app|
  Capybara::Selenium::Driver.new(app, :browser => :chrome)
end

Capybara.javascript_driver = :chrome

teardownも同じくどっちでも変わらないと思ってた。しかし、前者は上書きだけど後者は親クラスのsetupも呼んでくれるので後者の方が良い。例えば下記みたいにintegrationテストだけは全部js実行できるブラウザでテストしたいけどいちいち書いてられない場合。

# test/test_helper.rb:
class ActionDispatch::IntegrationTest
  setup do
    Capybara.current_driver = Capybara.javascript_driver
  end
end
# test/integration/post_comment_test.rb:
class PostCommentTest < ActionDispatch::IntegrationTest
  setup do
    sign_in('foo@example.com', 'password')
  end

  test 'post a comment' do
    (...)
  end
end

superが要らないのは気持ちいい。

単純にテストの後処理としてのサインアウトだったらcookieを消す方が速い。

page.driver.browser.clear_cookies

サインアウト機能のテストでよくある。visitメソッドだとgetしか飛ばせない。

実際にサインアウトリンクをクリックするのはサインアウトのテストだったらいいけど、他のテストの後処理として使う場合はすごく遅くなりそうで嫌だ

deviseには下記のような設定ができるらしいけど、これテストしてることになんの?って気がするので却下。

config.sign_out_via = Rails.env.test? ? :get : :delete

これで行けた。

page.driver.submit :delete, '/users/sign_out', {}

Engine Yardが9月1日から価格改定したみたい。

従量課金って金額計算が面倒だからこうやって何となくでいいから出してもらえるとわかりやすい。受託開発の時とか、お客さんに見せやすいし。

怖話もこの価格改定で安くなるはずだけど夏終わりでトラフィック落ちてきてるから悲しい・・・。

プロジェクト内で単数形と複数形が混在してて気になった。thoughtbotのprojectを幾つかみたけどみんなfactories.rb1ファイルに全部書いてた。

$ rails g factory_girl:model user
	create	spec/factories/users.rb

複数形で書きましょう。

EngineYardCloudが価格改定したのでそれにともなって怖話ではちょっと古いc1.mediumというEC2のインスタンスを使ってたので@yandoさんおすすめのm3.mediumに変えてみました。

vCPUが減る代わりにメモリはほぼ倍増、起動ディスクはSSDになる上に価格がかなり抑えられるということでこれで賄えれば万々歳ですね。夏でアクセス増えてる怖話の経費削減に大きく影響しそうです。

そもそも新しい種類のインスタンスということで見えないところもだいぶ新しくなってそうですし、期待です。

githubでprivateなorganizationリポジトリ(仕事のとかね)は同リポジトリ内に別ブランチを作って、そこからmasterにPRを送るという運用をしてました。


というかそういうとこが多いと思う。

同一リポジトリのbranchからmasterにpull requestする - komagata

@milkcocoa「privateなorganizationなreposからforkしたやつは無料のままprivateでつかえますよ。」


しばらくは"見"に回ってたんですが、自分のrepos(komagata/kowabanaとか)からPRする方式を試しています。どういうのが普通なのかわからないので自分のやり方を晒します。

forkしてきたkomagata/kowabanaをoriginにし、organizationの大本をupstreamというremote名で登録する。

origin内で修正pushして、これでOKとなったらPRを送る

$ git pull-request -b fjordllc:master

これのいいところは複数人で使ってるfjordllc/kowabanaといったorganizationリポジトリのブランチにゴミが残らないこと。pushを含めてPR寸前まで自分のreposの中で作業してるのでゴミがorganizationに行かない。

PRをマージした時DELETEボタンで消す癖を付けておけばいいが、なんだかんだで忘れてたり、いなくなった人がやってたbranchが残ってたりして消していいか迷う。

逆に困る点は、CircleCIやHoundCIなどのpushしたら色々やってくれる系のサービスはfjordllc/kowabanaしか対象じゃないので自分のreopsにpushした時点じゃ動かないところ。

かと言って参加メンバー全員のforkまでCI対象に含めるのもダルい。

なんとかならないかなー。みなさんどうやってるのか教えていただけると嬉しいです。

下記のブログのエントリーのお陰でで解決。感謝です。

Gitでリモートブランチを消してもgit branch -aに出てくる件 - chulip.org

確かにgit fetchのmanには書いてあるんだけど、git branchのmanを見に行っちゃうし、多すぎてどこのman見に行けばいいのかわからない。

まあ俺は一生gitをマスターすることができないんだろうな・・・。

% git fetch --prune
 x [deleted]         (none)     -> origin/add-random-featured
 x [deleted]         (none)     -> origin/add_partial
 x [deleted]         (none)     -> origin/award-badge
 x [deleted]         (none)     -> origin/boards_anonymous_comment
 x [deleted]         (none)     -> origin/change-story-end-menu-link-from-featured-to-top
 x [deleted]         (none)     -> origin/convert-comic-frames
 x [deleted]         (none)     -> origin/cookie-error
 x [deleted]         (none)     -> origin/css-bug-in-read-comics
 x [deleted]         (none)     -> origin/delete_comments
 x [deleted]         (none)     -> origin/en-add-help-mokuji
 x [deleted]         (none)     -> origin/enable-comment-from-cross-domain
 x [deleted]         (none)     -> origin/exclude-authors-comments-from-recents
 x [deleted]         (none)     -> origin/extract-simple_seed
 x [deleted]         (none)     -> origin/feature-disable-anonymous-comments
 x [deleted]         (none)     -> origin/fix-red-button-in-urban-legend
 x [deleted]         (none)     -> origin/ignore-violation
 x [deleted]         (none)     -> origin/iphone-icon-120
 x [deleted]         (none)     -> origin/look-back-mode
 x [deleted]         (none)     -> origin/modify-thank-you-mail
 x [deleted]         (none)     -> origin/more_users_info
 x [deleted]         (none)     -> origin/notice-tag-by-email
 x [deleted]         (none)     -> origin/oulu-setup
 x [deleted]         (none)     -> origin/poltergeist
 x [deleted]         (none)     -> origin/rails4.1.1
 x [deleted]         (none)     -> origin/random-story
 x [deleted]         (none)     -> origin/remove_link
 x [deleted]         (none)     -> origin/rmlink
 x [deleted]         (none)     -> origin/scarystory
 x [deleted]         (none)     -> origin/show-spoiler-checkbox-only-on-comic-and-story-pages
 x [deleted]         (none)     -> origin/update-rails-from-3.2-to-4.0

とにかくスッキリしました。

capybara-webkitのバージョンをアップしたら下記のエラー。

dyld: Library not loaded: /usr/local/lib/libpng15.15.dylib
  Referenced from: /usr/local/lib/QtGui.framework/Versions/4/QtGui
  Reason: image not found

capybara-webkitはメジャーバージョンが上がったので依存するライブラリも大きく上がったようだ。(多分今までのqt4はlibpng12を使ってたんだろう)

$ brew update && brew upgrade
$ brew reinstall qt4
$ brew reinstall lbpng

動いた。