大量のソースコードを縦断的に検索できるツール「Milkode」をインストールしてみました。
インストールの手順は以下の記事を参考にさせてもらいました。
Rubyを全く触ったことない人がMilkodeを導入するまで - Qiita
ソースコード検索ツール milkode をつかってみた - UNIX的なアレ
バージョン等がちょいちょい異なるのと、少しつまずいた部分があるので、その辺りを書いてみます。
Milkodeをインストール
RubyInstallerとDevelopment Kitをダウンロード
以下のサイトから最新版をダウンロードします。
- Ruby 2.3.0 (x64)
- DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe (x64 - 64bits only)
RubyInstallerとDevelopment Kitをインストール
RubyInstallerをインストール
ダウンロードした「rubyinstaller-2.3.0-x64.exe」を実行してセットアップを行います。
デフォルトのままであれば、C:\Ruby23-x64
フォルダに展開されます。
Development Kitをインストール
ダウンロードした「DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe」を実行してセットアップを行います。
そのまま展開すると、指定したフォルダ直下に資材がばらまかれるため、C:\DevKit
などを指定します。
展開が完了したら、Development Kitをコマンド実行でインストールします。
C:\DevKit>C:\Ruby23-x64\bin\ruby dk.rb init [INFO] found RubyInstaller v2.3.0 at C:/Ruby23-x64 Initialization complete! Please review and modify the auto-generated 'config.yml' file to ensure it contains the root directories to all of the installed Rubies you want enhanced by the DevKit.
RubyInstallerのインストール時に環境変数を通していない場合はruby
コマンドがそのままでは使えないので、パスを指定して実行します。
続いてインストール。
C:\DevKit>C:\Ruby23-x64\bin\ruby dk.rb install [INFO] Updating convenience notice gem override for 'C:/Ruby23-x64' [INFO] Installing 'C:/Ruby23-x64/lib/ruby/site_ruby/devkit.rb'
Milkodeをインストール
参考にした記事ではgem
コマンドでいろいろなライブラリをインストールしていましたが、手元の環境で現在のバージョンを使って構築したところ、とくに他のライブラリは不要でした。
以下のコマンドを実行してMilkodeをインストールします。
C:\DevKit>C:\Ruby23-x64\bin\gem install milkode Fetching: os-0.9.6.gem (100%) Successfully installed os-0.9.6 Fetching: sane-0.25.8.gem (100%) Successfully installed sane-0.25.8 Fetching: whichr-0.3.6.gem (100%) Successfully installed whichr-0.3.6 Fetching: thor-0.19.1.gem (100%) Successfully installed thor-0.19.1 ~~~省略~~~ Successfully installed haml-4.0.7
Fetching: coderay-1.1.1.gem (100%)
Successfully installed coderay-1.1.1
Fetching: milkode-1.8.7.gem (100%)
Successfully installed milkode-1.8.7
Parsing documentation for os-0.9.6
Installing ri documentation for os-0.9.6
Parsing documentation for sane-0.25.8
Installing ri documentation for sane-0.25.8
Parsing documentation for whichr-0.3.6
Installing ri documentation for whichr-0.3.6
Parsing documentation for thor-0.19.1
Installing ri documentation for thor-0.19.1
Parsing documentation for rack-1.6.4
Installing ri documentation for rack-1.6.4
Parsing documentation for eventmachine-1.2.0.1-x64-mingw32
Installing ri documentation for eventmachine-1.2.0.1-x64-mingw32 ~~~省略~~~ Parsing documentation for coderay-1.1.1
Installing ri documentation for coderay-1.1.1
Parsing documentation for milkode-1.8.7
Installing ri documentation for milkode-1.8.7
Done installing documentation for os, sane, whichr, thor, rack, eventmachine, daemons, thin, highline, termcolor, tilt, rack-protection, sinatra, sass, pkg-config, hashie, groonga-command, gqtp, groonga-client, io-like, archive-zip, rroonga, addressable, launchy, i18n, haml, coderay, milkode after 210 seconds
28 gems installed
無事、インストールできました。
Milkodeを初期化
インストール完了後は、Milkodeを初期化し、ソース検索の対象となるプロジェクトを作成します。
C:\Ruby23-x64\bin>milk init
create : C:/Users/<ユーザ名>/.milkode/milkode.yaml
create : C:/Users/<ユーザ名>/.milkode/db/milkode.db created.
プロジェクトは、ローカルのソースが格納されているフォルダを指定することもできますし、インターネット上のソースアーカイブやSVNなんかも指定できるようですが、ここでは割愛します
C:\Ruby23-x64\bin>milk add ソース検索対象のフォルダパス
Milkodeを起動
Milkodeを起動するには、以下のコマンドを実行します。既定のWebブラウザが立ち上がります。
C:\Ruby23-x64\bin>milk web
ところが、上記の手順でインストールこそ完了しているものの、コマンドを実行すると以下のようなエラーが発生しました。
C:\Ruby23-x64\bin>milk web
C:/Ruby23-x64/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- coderay/scanner (LoadError)
from C:/Ruby23-x64/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/milkode-1.8.7/lib/milkode/cdweb/lib/coderay_php_utf8.rb:9:in `<top (required)>'
from C:/Ruby23-x64/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from C:/Ruby23-x64/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/milkode-1.8.7/lib/milkode/cdweb/lib/coderay_wrapper.rb:13:in `<top (required)>'
from C:/Ruby23-x64/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from C:/Ruby23-x64/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/milkode-1.8.7/lib/milkode/cdweb/lib/command.rb:8:in `<top (required)>'
from C:/Ruby23-x64/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from C:/Ruby23-x64/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/milkode-1.8.7/lib/milkode/cdweb/app.rb:16:in `<top (required)>'
from C:/Ruby23-x64/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from C:/Ruby23-x64/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from config.ru:1:in `block in <main>'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/builder.rb:55:in `instance_eval'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/builder.rb:55:in `initialize'
from config.ru:in `new'
from config.ru:in `<main>'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/builder.rb:49:in `eval'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/builder.rb:49:in `new_from_string'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/builder.rb:40:in `parse_file'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/server.rb:299:in `build_app_and_options_from_config'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/server.rb:208:in `app'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/server.rb:336:in `wrapped_app'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.6.4/lib/rack/server.rb:272:in `start'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/milkode-1.8.7/lib/milkode/cdweb/cli_cdweb.rb:33:in `execute_with_options'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/milkode-1.8.7/lib/milkode/cli.rb:202:in `web'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/milkode-1.8.7/lib/milkode/cli.rb:263:in `invoke_command'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/milkode-1.8.7/bin/milk:9:in`<top (required)>'
from C:/Ruby23-x64/bin/milk:23:in `load'
from C:/Ruby23-x64/bin/milk:23:in `<main>'
あいにく、Rubyには疎いのですが、エラーを読む限りではC:\Ruby23-x64\lib\ruby\gems\2.3.0\gems\milkode-1.8.7\lib\milkode\cdweb\lib\coderay_php_utf8.rb
の冒頭に定義された「require 'coderay/scanner'
」という記述が悪さをしているようです。
この定義の実体はC:\Ruby23-x64\lib\ruby\gems\2.3.0\gems\coderay-1.1.1\lib\coderay
フォルダにある「scanners.rb」だと思いますが、記述の「scanner」に対し実体のファイル名が「scanners」です。
とりあえず、「scanners.rb」ファイルをコピーし、「scanner.rb」という名前にリネームして同じ場所に置いてあげたら、無事に起動するようになりました。なんだこれ。
Milkodeに外部からアクセス
同一LAN内の他端末からMilkodeにアクセスしたい場合は、起動時のコマンドを以下にすれば良いようです。
C:\Ruby23-x64\bin>milk web --host 0.0.0.0
自端末からはhttp://localhost:9292、他端末からはhttp://<IPアドレス>:9292でアクセスできます。ポート番号は変更可能です。
末尾に-n
オプションを付与して起動することで、起動時にブラウザが立ち上がるのを抑止することができます。
その他オプションは-help
から参照可能です。
C:\Ruby23-x64\bin>milk web -help
Usage:
milk web
Options:
[--customize], [--no-customize] # Create customize file.
[--db=DB] # Database dir.
# Default: C:/Users/sh/.milkode
-n, [--no-browser], [--no-no-browser] # Do not launch browser.
-o, [--host=HOST] # Listen on HOST.
# Default: 127.0.0.1
-p, [--port=PORT] # Use PORT.
# Default: 9292
-s, [--server=SERVER] # Use SERVER.
# Default: thin
-u, [--url=URL] # Relative URL. (Default: "/")
-g, [--gomilk], [--no-gomilk] # Allow "http://127.0.0.1:9292/gomilk"
-h, [--help], [--no-help] # Help message.
[--version], [--no-version] # Show version.
Startup web interface
長くなりましたが、以上です。