つらつらと眺めていたら、ちょっと気になる文章を見まして。
- 【レポート】オール・アバウト・Google Chrome - Google Developer Dayセッションレポート (2)
http://journal.mycom.co.jp/articles/2009/06/15/gdd2/001.html
Chromeの開発に使用されているツール・・・自動ビルド・自動単体テストのためにBuildbot、コードレビューのためにrietveldというツールが使用されている
そういや、コードレビューソフトで、MOONGIFTさんが宍道湖というソフトを出されてたなぁ。と思い出しました。
でまぁ、ちょっくら入れてみようかな?と思った次第。
情報源
参考となる情報源は、以下ですね。
- shinjiko - Google Code
http://code.google.com/p/shinjiko/ - [ruby][rails] shinjiko インストール
http://d.hatena.ne.jp/snkit/20081023
http://d.hatena.ne.jp/snkit/20081025
http://d.hatena.ne.jp/snkit/20081220 - これ日記なん? - コードレビューシステム宍道湖
http://bangbangshoot.sakura.ne.jp/tdiary/?date=20080615#p01
意外と少ないなぁ。コードレビューって興味を引くソフトでは無いのですかね?
…まぁ、身の回りの業○でもコードレビューって、あまり見聞きしないからなぁ。
でも、著名な開発管理の本を読むと、一番効率の良い品質の上げ方は「コードレビュー」(と類するやり方)なんですよね。
最初に
え〜、先に言うと、かなり試行錯誤して入れた為、「これでOKだろう」と言えるパターンを確立していません。(すんません、Rubyは不勉強なんです)
なので、試行錯誤の順番だけをメモ書きしますです。
ちなみに、ruby 1.8.6とgemが使える環境に入れてます。
インストールして動かすまでの順番
- shinjiko - Google Code
http://code.google.com/p/shinjiko/
上記サイトのInstall項で、'$ svn checkout http://shinjiko.googlecode.com/svn/trunk/ shinjiko
'と書かれているので、TortoiseSVN等を使って取得してください。
2.宍道湖は、railsの上で動くそうなので、以下のようにしてrailsを入れます。
$ gem install -v=2.0.2 rails Bulk updating Gem source index for: http://gems.rubyforge.org Install required dependency rake? [Yn] Install required dependency activesupport? [Yn] y Install required dependency activerecord? [Yn] y Install required dependency actionpack? [Yn] y Install required dependency actionmailer? [Yn] y Install required dependency activeresource? [Yn] y Successfully installed rails-2.3.2 ...
3.他にも色々と入れる必要があるようです。
今回は、以下のコマンドを叩いて入れました。
$ gem install gettext diff-lcs ... $ gem update --system ... $ gem install gettext -v 1.10.0 ... $ gem install sqlite3-ruby -v 1.2.3 ... $ gem install will_paginate ...
4.次に、 config/environments のフォルダに、development_sample.rb があるので、development.rb にリネームします。
5.次に、 config フォルダに、database.yml を用意します。
まぁ、database.sample.yml があるので、これをリネームすれば良いでしょう。
ただ、このサンプル。MySQLをデータベースに使う設定になっていますので、sqliteをデータベースに使うには、少々変更の必要ありです。
今回は、database.ymlを以下のようにしました。
# SQLite version 3.x # gem install sqlite3-ruby (not necessary on OS X Leopard) development: adapter: sqlite3 database: db\production.sqlite3 timeout: 5000
6.database.ymlを準備したら、rakeコマンドで データベースを作ります。
$ rake db:migrate (in F:/Wacky/Test/review_tool/shinjiko/src) == 1 CreateUsers: migrating =================================================== -- create_table("users", {:force=>true}) -> 0.1250s ...
7.よしよし、と思って'ruby script\server
'すると、以下で止まります。
$ ruby script\server => Booting WEBrick... c:/tool2/ruby18/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_ori ginal_require': no such file to load -- gettext/rails (MissingSourceFile) from c:/tool2/ruby18/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:3 1:in `require' ...
この解決法ですが、GEM_HOME環境変数が関係するそうです。
- Ruby on RailsにRuby-GetTextを入れると、`gem_original_require': no such file to load -- gettext/rails (MissingSourceFile)になった (山本隆の開発日誌)
http://www.gesource.jp/weblog/archives/2008/05/ruby_on_railsrubygettextgem_or.html - そんな悲しい目をしないで ≫ Blog Archive ≫ さくらのレンタルサーバに Redmine をインストール
http://www.gabuchan.net/blog/archives/11
ちなみに、自分の場合、コードの修正ではうまく行かなかったので、直接コマンドラインから環境変数を設定して逃げました。
$ set GEM_HOME=C:\tool2\ruby18\lib\ruby\gems\1.8
8.ここまで来ると、'ruby script\server
'で、WEBrickが「ある程度」まで起動できます。
$ ruby script\server => Booting WEBrick... => Rails application started on http://0.0.0.0:3000 => Ctrl-C to shutdown server; call with --help for options [2009-06-20 17:47:45] INFO WEBrick 1.3.1 [2009-06-20 17:47:45] INFO ruby 1.8.6 (2007-03-13) [i386-mswin32] [2009-06-20 17:47:45] INFO WEBrick::HTTPServer#start: pid=6768 port=3000 F:/Wacky/Test/review_tool/shinjiko/src/app/controllers/issue_controller.rb:20: w arning: don't put space before argument parentheses ...
上の'warning: don't put space before argument parentheses
'ってのは何だろう?と思ったのですが、答えは以下のsiteに書いてあります。
つまり、メソッドと引数の間に空白を入れるな。と。
- diff.rb で warning: don't put space before argument parenthesesと言われる - takotLog
http://qwik.jp/takotlog/8.html
9.上記対応で、ブラウザに何か表示できる所まで進みますが、何かおかしい。
logフォルダに、development.logファイルが出来ているので開くと、以下のメッセージがあります。
/!\ FAILSAFE /!\ Sat Jun 20 17:59:16 +0900 2009 Status: 500 Internal Server Error You have a nil object when you didn't expect it! You might have expected an instance of ActiveRecord::Base. The error occurred while evaluating nil.[] c:/tool2/ruby18/lib/ruby/1.8/cgi.rb:1166:in `[]' ...
これも、答えがありました。
- Ruby-GetText-Packageで The error occurred while evaluating nil.[] (山本隆の開発日誌)
http://www.gesource.jp/weblog/archives/2008/03/rubygettextpackage_the_error_o.html
config\environment.rb の最後に、以下のコードを突っ込む事で対応できます。
require 'will_paginate' require 'smtp_tls' class CGI module QueryExtension alias index_without_fix :[] def [] (key) return nil unless @params[key] index_without_fix(key) end end end
10.ここまで来ると、以下のログイン画面が出るようになります。
$ ruby script\server -e development => Booting WEBrick... => Rails application started on http://0.0.0.0:3000 => Ctrl-C to shutdown server; call with --help for options [2009-06-21 00:12:42] INFO WEBrick 1.3.1 [2009-06-21 00:12:42] INFO ruby 1.8.6 (2007-03-13) [i386-mswin32] [2009-06-21 00:12:42] INFO WEBrick::HTTPServer#start: pid=7768 port=3000 127.0.0.1 - - [21/Jun/2009:00:12:44 東京 (標準時)] "GET / HTTP/1.1" 302 101 - -> / 127.0.0.1 - - [21/Jun/2009:00:12:45 東京 (標準時)] "GET /account/login HTTP/1.1" 200 2301 - -> /account/login 127.0.0.1 - - [21/Jun/2009:00:12:45 東京 (標準時)] "GET /stylesheets/styles.css? 1245474226 HTTP/1.1" 304 0 http://localhost:3000/account/login -> /stylesheets/styles.css?1245474226 127.0.0.1 - - [21/Jun/2009:00:12:45 東京 (標準時)] "GET /javascripts/script.js?1 245474225 HTTP/1.1" 304 0 http://localhost:3000/account/login -> /javascripts/script.js?1245474225 127.0.0.1 - - [21/Jun/2009:00:12:45 東京 (標準時)] "GET /images/rails.png?124547 4225 HTTP/1.1" 304 0 http://localhost:3000/account/login -> /images/rails.png?1245474225
安心するのは早くて、実はログイン画面の先に進もうとすると、以下のエラーが出ます。
11.「no such file to load -- svn/client
」というエラーは、svnのrubyバインディングをインストールする必要があるようです。
とりあえず画面だけ見たい!という場合は、app/models/issue.rb の所を少し修正すればOKです。
require 'net/http' require 'net/https' #require 'svn/client' ...
おぉ、うまくログインできました。
ごめんなさい
すんません、ここまで動かすので一杯一杯でした。
本当は、Subversionとのリポジトリ連携とかの設定を掛けて試すべきなんでしょうけど、それらしいドキュメントが何も見当たらなかったので、投げ出してしまいました。