読者です 読者をやめる 読者になる 読者になる

pblog

pplog.net を作っている @ppworks こと越川直人(Koshikawa Naoto)のブログ。esa LLCで働いてます(\\( ⁰⊖⁰)/)

Receibo へ Pull Request した

github p4d

Receiboが便利すぎて、機能追加してしまったお話。

追加した機能

f:id:naoto5959:20120424175349p:plain

「いま、何買った?」の入力欄に過去の購入履歴を検索する機能を付けました。いつも同じような項目を入力するので、会社行き帰りのコンビニ買物後の入力が怠くて仕方なかったんですよね。

んで、その日も帰りにコンビニ寄った際に、めんどくさいなー、もう作っちゃおうかなーと思ったのがきっかけです。その帰りにスタバに寄って作りました。

「いま、何買った?」をクリックするだけで、履歴から項目が選べるようになりました。便利ですね。

準備

機能追加の準備です。

forkします。

githubにあるreceiboのrepositoryで[fork]ボタンをポチッとな。

んで、forkしたものをcloneしたんですがrubyのバージョンなんだろな、と。@shu_0115さんにバージョン確認したら、blogの記事があるとのことで、Receibo開発舞台裏 - プログラマ編を参考にしました。urlが*.heroku.comなので、Bamboo Stackを調べるとRubyのバージョンは大体想像は付きます。(Aspen Stackということもありうるのかな?)

gemsetを用意

最近は、デフォルトをruby-1.9.3-p125にしていたので、まずは1.9.2にして、receibo用のgemsetを作って作業。

rvm use ruby-1.9.2-p180 rvm gemset create receibo rvm use ruby-1.9.2-p180@receibo 

やるべきこと

READMEを見れば、たいてい書いてあって素晴らしいなと思いました。

bundle install 
touch config/local_setting.rb 

なんか適当に作ったtwitterアプリのCONSUMER KEYとCONSUMER SECRETを設定

LOCAL_OAUTH_CONSUMER_KEY = "YOUR_CONSUMER_KEY" LOCAL_OAUTH_CONSUMER_SECRET = "YOUR_CONSUMER_SECRET" 

localにdatabaseを作って

bundle exec rake db:setup 

サーバ起動

bundle exec rails s 

作る作業

やったことは、

  • 履歴表示用のactionをcontrollerに生やす
  • javascriptで入力欄に履歴を出す
  • cssの調整

ぐらいです。

差分はこちらです。実際取り込まれた差分はこちらを見てもらえると良いです。

@shu_0115さんとやりとりをして、履歴全件持ってくると大変なことになるよねー、とか数値入力を数字だけにすると-入力の裏技使えなくなるよねーとか、いうお話をして取り込む部分の相談をしました。

困ったこと

  • rails3.0だったので、いろいろ忘れていた
    • assetsがない!あ、そうか。
  • prototype.jsのままだったので、最初びびった。
    • 調べてみたところ、結局、jsはそれほど使ってなかったので、jQueryに置き換えました。

pull request

pull request時は、GitHubへpull requestする際のベストプラクティスを見つつ、rebase -iを駆使してコネコネしてから送りました。

その後のtwitter

こんな感じで、ドキドキpull requestを送って

 

 

 

いろいろやり取りした後に、このように告知して頂きました。

 

 

 

まとめ

自分が使っているサービスのソースが公開されている場合は、欲しい機能は言うだけでなくて、作ってしまえば良いというソーシャルコーディングの楽しさを初めて実感しました。今後もこういったソースが公開されているサービスが増えると良いなと思います。