Rails内でrequest.bodyの扱いがHTTPサーバによって違ったのでメモ。
(id:secondlife さんからTwitter上で”thin / unicorn で異なるところに着目するより、rack.input を見てそれが異なってる、というところのほうが重要じゃないかな。" とアドバイス頂いたので、後日再エントリー書きます!)
thin 1.3.1
unicorn 4.2.1
thinの場合
p request.body.class # => StringIO
unicornの場合
p request.body.class # => Rack::Lint::InputWrapper
上記の場合、引数にStringやStringIOを想定して実装しているメソッドでエラーになる。
thinに合わせるのなら、unicornでrequest.body.readにする必要がある。
p request.body.read.class # => String
これが正解。
http://stackoverflow.com/questions/3770728/secure-paperclip-urls-only-for-secure-pages
まさに上記の状態だったのだけども。
ハマったので記事にしておきます。
Rails 3.2.2
正解はActionDispatch::Response。
gems/rack-1.4.1/lib/rack/etag.rbを見ればわかるが、responseにStringは想定していないので、stackoverflowのbody(つまりString)だと、eachメソッドが無いのでエラー。
class PaperclipS3UrlRewriter def initialize(app) @app = app end def call(env) status, headers, response = @app.call(env) if response.is_a?(ActionDispatch::Response) && response.request.protocol == 'https://' && headers["Content-Type"].include?("text/html") response.body = response.body.gsub("http://#{ENV['CLOUDFRONT_URL']}", "https://#{ENV['CLOUDFRONT_URL']}") headers["Content-Length"] = response.body.length.to_s [status, headers, response] else [status, headers, response] end end end
http://api.rubyonrails.org/classes/Object.html
ここを見ると
AbstractResponse=ActionController::Response = ActionDispatch::Response
となっていて、いまいち関係性がわからんなと。
Heorkuアドオンのダウングレード方法(RedisToGo)についてです。
ClipieではHeorku上のKVSにRedisToGoを採用していました。
ディスク容量を気にしないでKVSを使える様に、現在はEC2上にKVSサーバーを構築しています。
RedisToGoのプランにSmallを利用していた際に、SmallからNanoにダウングレードする方法についての情報があまり無かったので記事にしました。
下記コマンドでダウングレードで来ます。
heroku addons:upgrade redistogo:nano
下記エラーが表示された場合、気をつけなくてはいけない事が1点。
ダウングレード後のディスク容量が、現在の使用ディスク容量より低い場合にエラーとなります。
failed ! To upgrade this instance please contact support@redistogo.com
既にRedisを使用していないのであれば、flushdbするなりでディスク使用量を減らしてコマンドを再度実行する事でエラーを回避する事が出来ます。
仕事以外に様々な勉強会等に参加していたりと、業界の知り合いが少しずつ増えてきました。
その中には、会社の社長や、エンジニア採用の権限を有したハッカーの方もいます。
で。
最近よく聞かれるのが、”良いエンジニア”知りませんか?"や"良いデザイナーの方知りませんか?"という声を沢山聞きます。
僕もそこまで知り合いが多くないので、現状紹介出来る人が少なくて困っています。
そこで、今は見ず知らずだけど、このエントリーを通じて知り合いになりたいな!と思ったので、記事を書きました。
勢いのあるベンチャーのエンジニア、デザイナーになりたい人はいますか?
ある方は連絡お願いします!
※個人的にやっている事なので、kamado, Inc.とは何も関係なく、商売目的でもありません。
メッセージはこちら。
WEB+DB PRESS vol.67のOpenGraphについての記事を書きました。
Facebookが提供を始めたOpenGraphを始めよう!という内容です。
OpenGraphって何?という方にも分かり易く書いているつもりです。
また、Ruby on Railsのサンプルコードを幾つか挙げています。
是非是非 WEB+DB PRESS vol.67チェックお願いします ;)