Date: 2014/4/1 Cate: rails, ruby Tags:  

Railsで複数台サーバーでGyazoというサービスを運用しているのですが、先日precompileで生成したcssのハッシュ値がデプロイ先のサーバーによって異なる、ということが起きました。まぁ本番サーバーではないところでおこったので特に問題はなかったのですが、なんでこうなったのかメモ。

まず、これが起きる前にassetsのホストを変更する、ということを実装しました。
config/environments/production.rb

config.action_controller.asset_host = "https://assets.gyazo.com"

とやって、assetsを別ホストにするってアレですね。

で、この変更をサーバーに反映させたあと、しばらくstopさせてたインスタンスを立ち上げてそいつにもデプロイをしたら、先にデプロイしたサーバーと後でデプロイしたサーバーでハッシュ値が変わった、という感じです。

で、cssの中身を見比べてみると、後でデプロイしたほうは一部だけbackground-image:url()のところで先ほど実装したassetsのホスト名込みで画像が指定されていて、他のサーバーはそういう指定の仕方が全くされてませんでした。
多分、css自体に変更はなかったのでわざわざprecompileしなおさなかったんでしょう。後でデプロイしたサーバーは過去にした変更をまとめてデプロイしたのでcssにも変更点があり、その部分だけ新たにprecompileが走ってassetsのホスト名も指定したものになったのでしょう。

ということで、

rake tmp:cache:clear

を各サーバーでしたらちゃんとcss内でも全部assetsのホスト名が指定したものになった状態でprecompileされて、ハッシュ値も一致しました。めでたしめでたし。

Leave a Reply