ラベル github の投稿を表示しています。 すべての投稿を表示
ラベル github の投稿を表示しています。 すべての投稿を表示

2012年3月29日木曜日

ActiveRecord自体のテストケースを実行する際にDBを選ぶ方法

■概要
ActiveRecord自体のテストケースを、"個別に"実行する際のデフォルトDBは、sqlite3です。これを切り替える方法が、長らくわからず時間を浪費していました。

■方法
わかってしまえば簡単です。ARCONNで指定できます。
$ cd activerecord
$ ARCONN=mysql2 ruby -Ilib:test test/cases/base_test.rb

2012年2月19日日曜日

Rails contributorsはどこにいるのか?

■概要

久しぶりの更新になります。最近はもっぱらgithubでの活動がメインになってしまいました。

色々なコントリビュータとやりとりをしていると「この人は現地で今何時なんだ?」と思う事が増えました。という事でまずコントリビュータがどこにいるのか調べてみました。

■説明

さてどうやったら調べられるか考えたのですが下記のステップでデータを作成しました。
  1. github APIを利用して、rails contributorsをリストアップします。 https://api.github.com/repos/rails/rails/contributors 
  2. github accountの束が手に入るので、こちらもgithub APIを利用して、profile情報を取得します。 例えばDHHなら、https://api.github.com/users/dhh
  3. 2. で取得した情報を良く見るとlocation情報に、"Chicago, USA"と書いてあるのでこれを緯度経度情報に変換できれば、やりたい事を実現できます。
  4. 色々調べてみると、google maps API v3のジオコーディングリクエストを利用すれば、目的が達成できる事がわかりました。 http://code.google.com/intl/ja/apis/maps/documentation/javascript/services.html#Geocoding
  5. ここまでで得た情報をgoogle maps上にプロットする。
■結果
(全体)都合によりTop300でローケーションが判明した人のみプロットしました。貢献数が多い人ほどZIndexを優先にし、画像サイズも変えてみました。世界に広がっていますね。アフリカ以外 ^o^

(北米)アメリカといっても広いんですね。色々な地域から参加してます。

(ヨーロッパ)アメリカよりも多いぐらいの人が参加していますね。ちょっと意外でした。josevalimさんってここなんですかね?

(南米)最近非常に活発なのは、この地域だと思います。見知った顔が一番多いです^o^

 (アジア)アジアは少なめですが、インドが非常に活発です。日本からは、松田明さんと恥ずかしながら私めがエントリーです。

■まとめ
プロットしてみると改めて、世界から参加しているのがわかりました。また各種APIを組み合わせて物を作るというのも面白いですね!


2011年11月23日水曜日

こうして僕はrailsを遅くした。そしてそこそこ直した。


最近blogの更新が途絶えがちですが、githubが面白くて(汗)...

先日、ruby on rails 3.1.2と3.1.3が矢継ぎ早にリリースされたのですが、実は関与者の一人だったりします。自戒の意味もかねて、経緯とかを書いておきます。

・2011/10/31 無作為に選んだissueを直そうと思った。

このissueを調べ始めたのですが、
色々調べてみるとmysqlのdescribeの問題という事が判明し、結果的にschema dumperの出力がバグってるという事が分かった。

そこで、describeを使わない形(informationスキーマを利用)で修正した。

・2011/11/06 master/3-1-stableにマージされた。

その後やりとりがあって、直ってよかったねという事で取り込まれた。

・2011/11/18 rails 3.1.2がリリースされた。

そりゃま~、ARは初めてだったので嬉しかったです(リリースノートにも名前が載ったし)。

・2011/11/18深夜 問題発覚。

ActiveRecord 3.1.2 takes 10 times slower than 3.1.1」というissueがあがる。
良く見てみるとmysqlとあるじゃないか!というのも前のリリースからmysqlについて修正したの私だけ(汗)

その後、某スペイン人(Christos Zisopoulosさん)とのやりとりで、"多くのデータベースが存在するmysql"の場合、遅くなる事が判明。

schema dumperの時のみ、元の修正を利用する、pull requestが取り込まれましたが、
抜本解決ではないので、"show index from"を利用する形で修正を進めた。

・2011/11/19 早朝 修正完了。
・2011/11/19 AM9時頃 某スペイン人により効果が確認され、pull requestした。

その後、railsコミッタのjonleightonにマージしてもらう(master/3-1-stable)。

・2011/11/21 sprockets等他の問題も修正され、rails 3.1.3がリリースされた。

ちなみにsprocketsは
 「windows環境でasset pipe lineが失敗する」
 「ファイルの更新が反映されない場合がある」
問題があり、最終的に2.0.xにダウングレードされました。

途中「速くリリースしろゴラ!」とか言う人がいてビビッタ。

・2011/11/23

超大規模なデータセットの場合、問題がある可能性がありそうな為、再度「show create table」を利用する形で調整中。

・2011/12/5


「show create table」を利用する形での実装が、rails 3.2系にマージされました。


・2011/12/6


さらにrails 3.1系にもback portされました。


■雑感

・世界中で困っている人がいるかと思うとかなりびびった。某スペイン人には多謝。
・この手の、量に対するテストをどう実施していくかは、そもそも根本的な問題。
・私の嘘英語でも何とかやっていけてるのが驚異的。
・gitはコマンド多すぎるが、かなり便利。

2011年10月21日金曜日

githubで既にあるIssueにPull Requestをくっつける方法

概要

githubではPull Requestを送信する時に自動的にIssueも作成されます。 しかし「既にあるIssueにPull Requestをくっつける」という事がしたくなる場合があります。

説明

困ったときのStackoverflowによると、githubはWeb-APIが充実しておりそれを利用すると、実現できるようです。参考ページを参考にするとUnix上でcurlを利用してwebリクエストを送信すると簡単でした。
例
$ curl -k \
         -d "pull[base]=master" \
         -d "pull[head]=master" \
         -d "pull[issue]=1234" \
         -u "kennyj:xxxxx" \
         https://github.com/api/v2/json/pulls/rails/rails

-k SSL証明書の問題?を避ける
-d "pull[base]=master" 送信先のbranch名
-d "pull[head]=master" 送信元のbranch名
-d "pull[issue]=1234" バグ票番号
-u "kennyj:xxxxx" ユーザ名とパスワード
https://github.com/api/v2/json/pulls/rails/rails 送信先のユーザ名とリポジトリ名
無駄にIssueを増やさない為にも知ってて損はなさそうです。

参考

How do you attach a new pull request to an existing issue on github?

2011年2月9日水曜日

RailsInstallerを入れた後に、githubにつなぐには

RailsInstallerがかなり簡単らしいので、自宅のwindows7環境に入れてみた。
確かにOne Click!でインストールできました。


その後gemのメンテナンスをしたかったので、githubに接続するまでのメモを残しておきます。
(上記のinstallとgithubのアカウント持っている前提です。)


○スタート => すべてのプログラム => RailsInstaller => Command Prompt with Ruby and Rails
○git関係の設定を行う

> git config --global user.name "foobar" 
> git config --global user.email "foobar@baz.com" 
> git config --global core.autocrlf true 
> git config --global core.safecrlf true
> git config --global github.user foobar
↓https://github.com/accountのアカウント管理からAPIトークンを貼り付け
>git config --global github.token 0123456789abcdef0123456789abcdef


○githubのssh関係の設定を行う
> mkdir "%homedrive%%homepath%\.ssh"
> c:\RailsInstaller\Git\bin\ssh-keygen -t rsa -C "foobar@baz.com"
> cat "%homedrive%%homepath%\.ssh\id_rsa.pub" | clip
https://github.com/accountのアカウント管理からSSH公開鍵に追加する(クリップボードに張り付いているんのでペースト)


○gitからとりだす
> git clone https://github.com/josh/ruby-coffee-script.git (urlは一例です。)


■参考
http://groups.google.com/group/railsinstaller/msg/a06f5164682bd3cb?pli=1