Legacy routing EOL on October 20th.

On Ocober 20th 2014 we are turning off the legacy “.heroku.com” routing path.

herokuのbamboo stackが使ってたlegacy routingが廃止されるということで、昔、www無しでアクセスしたい場合に直接IPで指定してた系のサービスがアクセスできなくなった。

U2Plusにも通知が来てたのでメンテしてる@tkawaさんに聞いてみたらGehirnのDNSで対応したらしい。

俺も使ってみたらアラ便利。ALIASレコードが使えて無料で2ドメインまで、レコード無制限ってのは海外含めてあんまり無いんじゃない?

Gehirnって聞くようになってからだいぶ経つのでいきなり無くなる感じはしないし、ええやんけ!

GehirnDNS | ゲヒルンサービスサイト

Slack Notifications!

これだと動かない。channel名に#が必要。usernameとかicon_urlとかも追加できる。

# wercker.yml:
build:
    after-steps:
        - sherzberg/slack-notify:
            subdomain: fjord
            token: $SLACK_TOKEN
            channel: "#kowabana"
            username: wercker
            icon_url: https://avatars3.githubusercontent.com/u/1695193?s=140

bashの脆弱性、怖話でも気になったけどEngine Yard Cloudで簡単に対応できました。

CVE-2014-6271からの一連の脆弱性対策がボタン一個で勝手に対応できて楽ですね。

全部の詳細を抑えておくのは大変ですが、こうやって表記してくれると安心感がありました。

お客さんの案件だったらドヤ顔で「調査して対応しました。」とか言えますな。

いきなり更新は怖いので例によって一回cloneした環境で動くこと確認してからアップデートしました。

定期購読しているWeb+DB Press vol.82 ”切りひらくRuby”を読んで知りました。(俺はタバコ吸わないので仕事の休憩時は適当に置いてある雑誌を読む)

今はbrewで入るみたい。rbenvとruby-buildに依存してるからこれからrbenv入れる時はこっちを入れれば一発で全部入りますな。

$ brew install rbenv-default-gems
$ vi ~/.rbenv/default-gems
bundler
rbenv-rehash

中身はbash scriptで俺の知らないテクがたくさんあってよくわかんなかった。

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

$ 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

複数形で書きましょう。