Regexp.escape

何も考えずに

expect(foo).to match(/#{bar}/)

みたいなテストを書いてたら、たまに落ちる。

なんでかな、と思ったら、barに正規表現の文字列が入ることがあった。
※ barはSecureRandom.urlsafe_base64で生成した文字列

expect(foo).to match(Regexp.escape(bar))

で事なきを得た。

Regexp.escape、忘れがちだ。気をつけよう。

au iPhoneの請求額が急に500円高くなった

auスマートバリュー mineに申し込んだので、普段はチェックしない携帯の請求額を確認していた。
すると、今月から急にオプション使用料が6000円から6500円に上がっている!?

明細を見ると…「テザリングオプション」と書いてある。
あー、確かにiPhone 5買った時に2年間無料で申し込んでるから、もう無料期間終わってるなぁ。

が、申し込んだのは2年前の9月なのに、なぜ今更?

テザリングオプションは一度解約したらもう1回無料にできたりとか、いろいろバグあったっぽいから、これもバグだろうか。
で、スマートバリュー適用にあたり、料金が見直されて、誤って無料になってたのが修正された、的な。

なんともリアクションしづらい事態である。

Nginxのデフォルトサーバーで404を返す

server {
  listen 80 default_server;
  server_name _;
  return 404;
}

サーバ名

すべてのサーバに適合させる例では奇妙なサーバ名 “_” が使われます:

このサーバ名に特別なところはありません。単にどのサーバ名とも決してマッチしない無数の無効なドメイン名のひとつです。したがって、 “--”、“!@#” なども同様な結果を得られます。

そうなのか。

Capistranoでデプロイしたアプリでrails runnerがうまく動かない

Looks like your app's ./bin/rails is a stub that was generated by Bundler.

In Rails 4, your app's bin/ directory contains executables that are versioned
like any other source code, rather than stubs that are generated on demand.

Here's how to upgrade:

  bundle config --delete bin    # Turn off Bundler's stub generator
  rake rails:update:bin         # Use the new Rails 4 executables
  git add bin                   # Add bin/ to source control
:
:
:

とか言われる。
なぜだ?と思ったら、

# conig/deploy.rb
set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets')

にbinが入っちゃってた。
デフォルトのコメントの内容を書き換えて設定した時に、消してなかったっぽい…。

参考

SecureRandom.urlsafe_base64

singleton method SecureRandom.urlsafe_base64

恥ずかしながら知らなかった。
今まで、hexばっか使ってた。
こっち使おう。