投稿

7月, 2015の投稿を表示しています

subtree push出来ない

現在開発している案件では、共通処理用のリポジトリを用意し、それを各システムのリポジトリ内でsubtreeとして管理するようにしています。
その時に発生したエラーについてもメモ書きです。

subtree pushできない
出来ないというのは正しい表現ではなく、実際にはpushは出来ました。
が、pushしたはずのブランチがすぐに削除されます。



何故?
先ほどのエラーの fatal: bad object 1a42f27521841710a4facb5082d80939c12ac0c6 からは、「1a42f27521841710a4facb5082d80939c12ac0c6のコミットが見つからない」のだろうと推測出来ます。

この1a42f27521841710a4facb5082d80939c12ac0c6のコミットはどこにあるのでしょう?

取り込まれてないだけじゃ...
commonのリモートリポジトリに対象のコミットがありました!
単純にsubtree pushしたいsubtreeに、リモートリポジトリの変更が取り込まれていないだけのように見えます。
subtree mergeで取り込んで、もう一度subtree pushしてみると...



ブランチが削除されずにsubtree push出来ました!

subtree mergeしよう
今回のエラーから得た教訓は、「subtree pushする前にsubtree mergeで最新のリポジトリの反映を取り込もう」ということです。
もし、皆さんも似たような現象に悩まされるような時があればやってみてくださいね。

RailsでデプロイされているRevisionを知る

Railsで特定の環境にどのRevisionのアプリがデプロイされているかを、確認出来るようにするときがあります。
そういった時は、capistranoで生成されるREVISIONの内容を、app/views/layouts/application.html.erbに埋め込むんでいました。



このやり方は、以下の点から余りよろしくないですね。

HTMLが汚染される
返却するViewがない場合などに知る手立てがなくなる(nothing: trueなど)
これを回避するには、Response Headerに埋め込むのが良いかと思います。
こうすることで上記の問題が回避出来るはずです。
このResponse Headerに埋め込むロジックを自分で書いても良いのですが、メンテされていそうなGemがあるなら利用しない手はないでしょう。

rack-revisionというGemがあります。



これをconfig.ruに書くだけでResponse Headerに埋め込むことが出来るようになるGemです。

こういったGemを利用したり、自作することでより良いアプリケーションが作れるなら、そうしていきましょう。
また、利用する前に少しでいいのでコードに目を通しておいた方が良いです。
メンテされていても大きなバグが潜んでいるかもしれないですからね。

ActiveSupport::TimeZoneの一覧

ActiveSupport::TimeZone.allで取れる名前とUTCとの時差の一覧をメモ。

NameUTC OffsetUTC Offset(Daylight Time)American Samoa-11:00-11:00International Date Line West-11:00-11:00Midway Island-11:00-11:00Hawaii-10:00-10:00Alaska-09:00-08:00Pacific Time (US & Canada)-08:00-07:00Tijuana-08:00-07:00Arizona-07:00-07:00Chihuahua-07:00-06:00Mazatlan-07:00-06:00Mountain Time (US & Canada)-07:00-06:00Central America-06:00-06:00Central Time (US & Canada)-06:00-05:00Guadalajara-06:00-05:00Mexico City-06:00-05:00Monterrey-06:00-05:00Saskatchewan-06:00-06:00Bogota-05:00-05:00Eastern Time (US & Canada)-05:00-04:00Indiana (East)-05:00-04:00Lima-05:00-05:00Quito-05:00-05:00Caracas-04:30-04:30Atlantic Time (Canada)-04:00-03:00Georgetown-04:00-04:00La Paz-04:00-04:00Newfoundland-03:30-02:30Brasilia-03:00-03:00Buenos Aires-03:00-03:00Greenland-03:00-02:00Montevideo-03:00-03:00Santiago-03:00-03:00Mid-Atlantic-02:00-02:00Azores-01:00+00:00Cape Verde Is.-01:00-01:00Casablanca+00:00+01:00Dublin+00:00+01:00Edinburgh+…

jQueryのextend関数

今回は、jQueryのextend関数で少しハマったのでその備忘録を書きます。

jQueryのextend関数で特定のObjectのPropertyをundefinedで上書きしようとしたのですが
うまく上書き出来ませんでした。



jQueryの公式ドキュメントにも書いてありますが、undefinedやnullの時は上書きしないようです。
Underscore.jsのextend関数では上書きされるようです。



そういう挙動だし仕方ないか。