[groonga-dev,02589] Re: Groongaのbuildpackについて

Back to archive index

Kouhei Sutou kou****@clear*****
2014年 8月 9日 (土) 12:01:11 JST


須藤です。

In <CAH9Y0y49uGkWgq68vN3qGXpbNKOMx17t4p=CpKTP****@mail*****>
  "[groonga-dev,02587] Re: Groongaのbuildpackについて" on Sat, 9 Aug 2014 11:20:36 +0900,
  杉本涼 <sugry****@gmail*****> wrote:

> buildpack-groongaのheroku用のビルド最新バージョン検出↓の改良が終わりました。
> 
> https://github.com/groonga/heroku-buildpack-groonga/blob/master/bin/compile

ありがとうございます!
動きそうな気がしますね!

> なんか変なところがあったら、アドバイスしてもらえるとうれしいです。

はい!

    latest_version = releases[0]["tag_name"]

の変数名ないんですが、これはlatest_tag_nameがいいと思います。

  latest_version.sub(/\Av/, "")

したもの(タグ名の先頭のvを抜いたもの)がバージョンなので、
タグ名を入れる変数名にversionと付けてしまうと混乱の原因にな
りそうです。

あと、

  begin
    releases[0]["assets"][0]["name"]
    latest_version = releases[0]["tag_name"]
  rescue
    latest_version = releases[1]["tag_name"]
  end

で例外を使って「最新リリースにHeroku用ビルドがあるか」をチェッ
クしていますが、パッと見ではわかりにくいかなぁと思いました。

たぶん、これ、Heroku用ビルドがないときは

  releases[0]["assets"][0]

がnilになって

  releases[0]["assets"][0]["name"]

が

  nil["name"]

相当になってエラーってことですよね?

Heroku用ビルドがあるかどうかは明示的にコードにした方がわかり
やすくなると思いました。たとえば、こんな感じです。
「heroku-groonga-」始まりのファイルがあればHeroku用ビルドが
あるリリースというコードのつもりです。

  latest_heroku_available_release = releases.find do |release|
    assets = release["assets"] || []
    assets.any? do |asset|
      asset["name"].start_with?("heroku-groonga-")
    end
  end

どうでしょうか!?


あ、あと、この変更前の状態だと動かないよーという報告がきてい
るので、

  https://github.com/groonga/heroku-buildpack-groonga/issues/2

動くようにしたよーとコメントして閉じておいてもらえるとうれし
いです!

たとえ動かないよという報告でも、やっていることに対してフィー
ドバックがあるといいですね!


-- 
須藤 功平 <kou****@clear*****>
株式会社クリアコード <http://www.clear-code.com/>

Groongaベースの全文検索システムを総合サポート:
  http://groonga.org/ja/support/
パッチ採用 - プログラミングが楽しい人向けの採用プロセス:
  http://www.clear-code.com/recruitment/
コードリーダー育成支援 - 自然とリーダブルコードを書くチームへ:
  http://www.clear-code.com/services/code-reader/




groonga-dev メーリングリストの案内
Back to archive index