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

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(などの)環境があって普通にいじれる。

いやぁ便利。