バグの発見
rubyでGoogle Maps APIを簡単に扱えるgemがあります。
これがmacでは動くけど、windowsだとエラーが出て動きません。
原因はログファイルの出力で/dev/null
を使ってるから。
これをwindowsではnul
を使うように修正すればmacでもwindowsでも使えるようになります。
というわけで修正したものをgithubにアップして、本家の作者に取り込んでもらえるようにpull requestを送るまでの流れをまとめました。
GithubにSSHキーの登録
主に以下の記事通りに進めます。
キーの登録が既に済んでる人はこの作業をやる必要はありません。
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/username/.ssh/id_rsa): ↓(エンターキーの入力)
Created directory '/Users/username/.ssh'.
Enter passphrase (empty for no passphrase): 設定したいパスワードを入力↓
Enter same passphrase again: 上で入力したのと同じパスワードを入力↓
Your identification has been saved in /Users/username/.ssh/id_rsa.
Your public key has been saved in /Users/username/.ssh/id_rsa.pub.
The key fingerprint is:
:
:
:
$ cat ~/.ssh/id_rsa.pub | pbcopy
以上の操作でクリップボードに公開鍵がクリップボードにコピーされるので、下記ページから登録します。
登録が済んだら、接続できるかテストしてみます。
$ ssh -T git@github.com
(パスワード入力画面が出るので、先ほど設定したパスワードを入力)
Identity added: /Users/username/.ssh/id_rsa (/Users/username/.ssh/id_rsa)
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
以上のようにsuccessfully
と出れば、SSHの設定はうまくいっています。
修正してpull request
ここからが本番です。
主に下記の記事の通りに進めます。
forkしてリポジトリをコピーしてきたら作業に移ります。
$ git clone git@github.com:inarin/google-maps.git
$ cd google-maps
$ ls
Gemfile Rakefile spec
LICENSE.mkd google-maps.gemspec
README.mkd lib
$ git checkout -b external
これでexternal
ブランチに移ったので、ファイルを修正します。
lib/google-maps/logger.rb
require 'logger'
module Google
module Maps
module Logger
attr_accessor :logger
def log_file=(file)
self.logger = ::Logger.new(file)
end
def self.extended(base)
# base.log_file = "/dev/null"
base.log_file = RUBY_PLATFORM.index(/mswin(?!ce)|mingw|cygwin|bccwin/) ? "nul" : "/dev/null"
end
end
end
end
変更をcommitしてリモートへpushします。
$ git commit -am "windows bug fix"
$ git push origin external
これでGitHubのレポジトリにexternal
ブランチができます。
あとは記事の通りに…。
追記
pull requestを無事に送れたので参考までにリンクを貼っておきます。