Unicornでtimeout (61s > 60s), killing

とても重い処理があって(あっちゃダメなんだけど)

2015/12/02 04:38:45 [error] 31572#0: *711812 upstream prematurely closed connection while reading response header from upstream, client: IPアドレス, server: example.com, request: "POST /path HTTP/1.1", upstream: "http://unix:/tmp/unicorn.socket:/path", host: "example.com", referrer: "https://example.com/"

でエラーに。

nginxの設定で、

proxy_read_timeout 180;

に伸ばしてみたけどダメ

E, [2015-12-02T04:38:45.284877 #21386] ERROR -- : worker=6 PID:17845 timeout (61s > 60s), killing
E, [2015-12-02T04:38:45.359676 #21386] ERROR -- : reaped #<Process::Status: pid 17845 SIGKILL (signal 9)> worker=6
I, [2015-12-02T04:38:48.954480 #21614]  INFO -- : worker=6 ready

あ、

# unicorn.rb
timeout 180

こっちでした。

http://unicorn.bogomips.org/Unicorn/Configurator.html#method-i-timeout

Unknown WatchConnectivity error

これが出てWatchシミュレータが起動しなくなり、困った。
シミュレータのデータをリセットしたら解消した。

apipie-railsのexamplesが"\x89" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)で生成できない

https://github.com/rails/activesupport-json_encoder
を入れたら解消した。
たぶん最新版のRailsだと発生しないんでしょう。

RailsでjQuery 2を使う

趣味で作るサイトとか、古いブラウザなんて気にしない場合、jQuery 1を読むのは無駄以外の何者でもない。

でもRailsはデフォルトで1を読む。

そんな時は、

app/assets/javascripts/application.js
-//= require jquery
+//= require jquery2

とすればいい。簡単。

ブラウザのコンソールなどで確認すると、

> $.fn.jquery
"2.1.3"

こうなるはず。

jquery-railsの4.0.0以上が必要

Googleスプレッドシートを埋め込むときに表示するシートを指定する

https://wp-glogin.com/2014/08/embedding-google-spreadsheets-with-more-control-over-appearance/

普段の編集の時は、

https://docs.google.com/spreadsheets/d/:file_id/edit#gid=0

のように#gid=をつければいいけど、iframeで埋め込む時はこれだとダメ。

<iframe src="https://docs.google.com/a/:domain/spreadsheets/d/:file_id/htmlembed?gid=0">

のように?gid=で指定すればいけた。

ちなみに0は1番目のシートで、その他のシートにはそれぞれもっと大きな数字が割り当てられてる。(idは編集画面のURLやAPIから判別可能)