GitLab API (gitlab gem)を使ってみました
今年の新人研修で課題の提出場所に GitLabを使ってみました。生徒の人数分 x 課題数のリポジトリーが作られるので、課題結果を自分の環境にcloneするのを手動で行っているとたいへんです。そこで、GitLab APIを使い、簡単なツールを作ってみました。
GitLab APIには gitlab gem があり、簡単に使う事ができます。しかし、いざ自分のやりたいプログラムを書こうと思ったら・・・・
- APIドキュメントはあるが、内容は今ひとつ
- サンプルコードが少ない
- ネット上 (英語の情報を含め)にも情報が少ない
という事で、gitlab gem の RSpecコードなどを見ながら勉強しました。また、APIの設計があまりオブジェクト指向的でなく、最初は戸惑いました。
以下のコードは、 あるグループに所属する全員の レポジトリーの一覧を表示し、そのリポジトリをアクセスするために自分のアカウントを管理者として登録し、全リポジトリーを clone するコードです。
PRIVATE_TOKEN は管理者(root)アカウントの PRIVATE_TOKEN を指定して下さい。
#!/usr/bin/env ruby require 'gitlab' GUEST_LEVEL = 10 MASTER_LEVEL = 40 GITLAB_SERVER_URL = 'http://GITLAB_SERVER' GITLAB_API_URL = "#{GITLAB_SERVER_URL}/api/v3" PRIVATE_TOKEN = 'xxxXXXXXXXXXXxxXXXXn' GROUP_NAME = 'student' MY_NAME = 'yuumi3' def get_group_members(gitlab_root, group_id) gitlab_root.group_members(group_id).select{|e| e.access_level == GUEST_LEVEL}.map(&:username) end def add_member_to_projects(gitlab_member, user_id) gitlab_member.projects.each do |project| unless gitlab_member.team_members(project.id).find {|m| m.id == user_id} gitlab_member.add_team_member(project.id, user_id, MASTER_LEVEL) puts " add users to #{project.path_with_namespace}" end end end def list_all_projects(gitlab_member) gitlab_member.projects.each do |project| puts " #{project.path_with_namespace}" end end def clone_all_projects(gitlab_member) gitlab_member.projects.each do |project| unless File.exists?(project.path_with_namespace) cmd = "git clone git@#{GITLAB_SERVER_URL}:#{project.path_with_namespace} #{project.path_with_namespace}" puts " #{cmd}" system cmd end end end gitlab_root = Gitlab.client(endpoint: GITLAB_API_URL, private_token: PRIVATE_TOKEN) username_to_id = Hash[*gitlab_root.users.map {|u| [u.username, u.id]}.flatten] groupname_to_id = Hash[*gitlab_root.groups.map {|u| [u.name, u.id]}.flatten] members = get_group_members(gitlab_root, groupname_to_id[GROUP_NAME]) # 生徒のrepository一覧 members.each do |member| gitlab_member = Gitlab.client(endpoint: GITLAB_API_URL, private_token: PRIVATE_TOKEN, sudo: member) list_all_projects(gitlab_member) end # 生徒のrepositoryに私を管理者として追加 members.each do |member| gitlab_member = Gitlab.client(endpoint: GITLAB_API_URL, private_token: PRIVATE_TOKEN, sudo: member) add_member_to_projects(gitlab_member, username_to_id[MY_NAME]) end # 生徒のrepositoryをclone members.each do |member| gitlab_member = Gitlab.client(endpoint: GITLAB_API_URL, private_token: PRIVATE_TOKEN, sudo: member) clone_all_projects(gitlab_member) end
ActiveState Komodo Edit 日本語メニュー
Komodo Edit4.3 用 日本語 拡張モジュールが出てました → http://komodonoko.com/node/44 ありがとうございます!
日本語化されるのは、メニューやツールチップのみで、エラーメッセージやヘルプは日本語化されません。
インストル手順は、ダウンロードしたファイルを展開し出来た komodo-ja.txt に書かれています。
私の場合、インストール&再起動後 locale_switcher-2.1.xpi が有効になりませんでしたが、再度 locale_switcher-2.1.xpi をインストール&再起動したら日本語化できまました。
追記
日本語メニューの一部がエラーになってますね。
NetBeans を試してみた
基本情報:
評価
インストール
簡単
起動時間など
- それほど遅くない
その他機能
TextMate を試してみた
基本情報:
-
- 名前、バージョン: TextMate 1.5.7
- 形態: 製品 €39 ≈ $63
- Platform: Mac OS X
- 入手先: http://macromates.com/
- 日本語の情報: http://www.google.co.jp/search?hl=ja&q=textmate&btnG=%E6%A4%9C%E7%B4%A2&lr=lang_ja
評価
インストール
簡単
日本語
- 日本語メニュー: ×
- ソースコードの日本語表示:△
- 日本語入力: △
インストール直後は、日本語の表示・入力ともにダメですが、Safari Stand の作者 id:hetima さんが英語と日本語が等幅のフォントと日本語表示プラグインを公開してくれています。素晴らしい!! → http://hetima.com/textmate/index.html
プラグインのインストールは ~/Library/Application Support/TextMate/PlugIns/ にプラグインを入れるように書かれていますが、私の環境(まだ評価ライセンス)ではこのフォルダーは無かったので、/Applications/TextMate.app/Contents/PlugIns/ に入れました。
ForMateKonaVe.ttfのインストールはForMateKonaVe.ttfをダブルクリックしFont登録し、TextMateのPreferenceのFont&Colorで orMateKonaVe を選択すればOKです。
これで、下のように日本語の表示や入力が出来るようになります。
起動時間など
- 高速!
補完機能など
感想
海外では高い評価を得ていて、Rails作成者のDHHもお薦めの Mac専用エディターでしたが、以前は日本語表示/入力共にダメで日本ではあまり使われていなかったようです。
しかし、現在は id:hetima さんの作られたフォントとプラグインのおかげでギークな日本人Rails開発者の間では使われています。
コード補完を超えた、よく使うコードのパターンを瞬時に入力できる Snippet 機能は、慣れたら 素早いコーディング力をもたらすと思います。
また、IDEにありがちな反応の遅さがなく、起動の早さは快適な開発環境を与えてくれそうです。
ただし、依然として日本語がきれいに表示出来ないので、日本語表示を気にする人には無理かもしれません。
また、メニューの構成がどうもしっくりこない、コンテキストメニューが弱いと私は思いますが、Snippet 機能や軽快さは魅力的なのでしばらく Ruby on Railsの開発には使ってみようかと思っています。
ActiveState Komodo Edit を試してみた
基本情報:
-
- 名前、バージョン: ActiveState Komodo Edit 4.3.1
- 形態: Open Source
- Platform: Windows, Mac OS X, Linux
- 入手先: http://www.activestate.com/Products/komodo_ide/komodo_edit.mhtml
- その他: 上位ソフトとして Komodo IDE がある $295
- 日本語の情報: http://komodonoko.com/
評価
使ったのは Mac OS X 版です。
インストール
簡単
日本語
- ソースコードへの日本語入力・編集はOK
- メニューは 英語のみ、ただしバージョン4.2に対して、日本語メニューを作られた方がいます。詳細→ http://komodonoko.com/taxonomy/term/35 残念ながら 4.3.1では動きませんでしたがもう少し追求してみたいです。