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ばっか使ってた。
こっち使おう。

OmniAuth.config.logger = Rails.logger

本番でOAuth認証したら無言でFailureに誘導される、なんて時に助かる設定。
READMEにも記載されています。

さっきまで何も教えてくれなかったログに、

I, [2015-02-27T02:45:34.384686 #21255]  INFO -- : (google_oauth2) Callback phase initiated.
E, [2015-02-27T02:45:34.627523 #21255] ERROR -- : (google_oauth2) Authentication failure! invalid_credentials: OAuth2::Error, {"errors"=>[{"domain"=>"usageLimits", "reason"=>"accessNotConfigured", "message"=>"Access Not Configured. The API (Google+ API) is not enabled for your project. Please use the Google Developers Console to update your configuration.", "extendedHelp"=>"https://console.developers.google.com"}], "code"=>403, "message"=>"Access Not Configured. The API (Google+ API) is not enabled for your project. Please use the Google Developers Console to update your configuration."}: 
{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "accessNotConfigured",
    "message": "Access Not Configured. The API (Google+ API) is not enabled for your project. Please use the Google Developers Console to update your configuration.",
    "extendedHelp": "https://console.developers.google.com"
   }
  ],
  "code": 403,
  "message": "Access Not Configured. The API (Google+ API) is not enabled for your project. Please use the Google Developers Console to update your configuration."
 }
}

という親切なメッセージが表示されるようになります。(正直、デフォルトでこうしといてよ、という気も。)

Google+ APIの有効化、忘れがち。

Circle CIにsshで入れるのめっちゃ便利

今更ながら。

ローカルでは問題ないテストがなぜかCircle CI上で失敗する。

原因は以下の凡ミスだったんだけど、sshで入って直接いじれたおかげですぐ解決した。


Time.parse('2015-02-24 09:49 +0900')

ローカルだとoffsetの指定が無視されても日本時間が使われるのでテストが通ってしまっていた。

Time.parse('2015-02-24 09:49 +9:00')

使い方はとても簡単。
Rebuild & enable sshをクリックして表示されるsshコマンドで、ログインできる。
その後、$ cd ~/リポジトリ名するとそこにはRails(などの)環境があって普通にいじれる。

いやぁ便利。

アカウント名のValidationエラーメッセージ

いつもどう書くか迷うので有名どころで、簡単にエラーを表示できるサービスのを確認してみた。

GitHub

  • Username may only contain alphanumeric characters or dashes and cannot begin or end with a dash

Twitter

  • Invalid username! Alphanumerics only and not all numeric.

Yahoo

  • Your username must begin with a letter.
  • Your username cannot end in an underscore or a period.
  • Only letters, numbers, underscores, and one period are allowed.

GitHubのが1文に収まってていい感じ。