xmindocが動作しない

前回の質問でWindowsXPにRubyをインストールできました。
Rubyのgemでxmindocがインストールできない【WindowsXP】

xmindocを動作させるためでした。
しかし、xmindocコマンドを実行すると動作しませんでした。

C:\>xmindoc
C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Co
uld not find zipruby (>= 0) amongst [bigdecimal-1.1.0, io-console-0.3, json-1.5.
5, mini_portile2-2.0.0.rc2, minitest-2.5.1, nokogiri-1.6.7.2-x86-mingw32, rake-0
.9.2.2, rdoc-3.9.5, xmindoc-0.0.7, zipruby1.9-0.3.6-x86-mswin32] (Gem::LoadError
)
        from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:778:i
n `block in activate_dependencies'
        from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:767:i
n `each'
        from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:767:i
n `activate_dependencies'
        from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:751:i
n `activate'
        from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems.rb:1232:in `gem'
        from C:/Ruby193/bin/xmindoc:22:in `<main>'

どうすればxmindocが動作するでしょうか?

見つからないzipruby

エラーログには「C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247」とあります。
フォルダ名から察するにRubyのソースコードファイルのようです。
「dependency」という名前から察するに、Rubyを実行するときのファイル間の依存関係を解決する処理を実装したソースコードなのでしょう。

おそらく、xmindocがziprubyを参照するときの処理を「dependency.rb」が行っているのでしょう。
エラーログに「Could not find zipruby」とあるので、「dependency.rb」は「zipruby」を見つけることができなかったということなのでしょう。

dependency.rb

エラーログにあるとおり「dependency.rb」ソースファイルを開き、247行目付近を見てみました。

  def to_specs
    matches = matching_specs true

    # TODO: check Gem.activated_spec[self.name] in case matches falls outside

    if matches.empty? then
      specs = Gem::Specification.all_names.join ", "
      error = Gem::LoadError.new "Could not find #{name} (#{requirement}) amongst [#{specs}]"
      error.name        = self.name
      error.requirement = self.requirement
      raise error
    end

    # TODO: any other resolver validations should go here

    matches
  end

「raise error」と書いてある部分が247行目です。
そのエラーを返している関数の名前が「to_specs」のようです。

「"Could not find #{name} (#{requirement}) amongst [#{specs}]"」の部分は、エラーログの内容のように見えます。この処理でエラーログの文字列を生成しているのでしょう。

しかし、なぜ「zipruby」を見つけることができなかったのか分かりません。

手詰まり

「dependency.rb は zipruby を見つけることができなかった」ということは分かりました。
しかし、その原因と対策が分かりません。

どうすればxmindocが動作するでしょうか?


追記1

2016/06/07 00:00頃の追記です。

頂いたコメントの対処を試してみました。

以下のような概要でした。

  1. xmindocのアンインストール
  2. ビルドツールのインストール(rake)
  3. xmindocのソースコードを取得
  4. xmindocが依存しているライブラリの名前を変更
    • xmindoc.gemspec
      • zipruby→zipruby1.9
  5. xmindocをビルドする
  6. ビルドしたxmindocをインストールする

しかし、ビルドができないエラーが発生しました。

コメントの誤字を発見しましたが、修正しても解決しませんでした。

× ziruby1.9
○ zipruby1.9

詳しくは最後のエラーログをご覧ください。

以下、作業したことを記録します。

git for Windows

git for Windows は既にインストール済みでした。
(1.9.4-preview20140815)

xmindocアンインストール

C:\>gem uninstall xmindoc
Remove executables:
        xmindoc

in addition to the gem? [Yn]  n
Executables and scripts will remain installed.
Successfully uninstalled xmindoc-0.0.7

よくわからず n を押してしまいました。
実行ファイルとスクリプトのファイルが残ったっぽいので再度アンインストール。

C:\>gem uninstall xmindoc
INFO:  gem "xmindoc" is not installed

しかし変わらず。xmindocのアンインストールが不完全かもしれません。
どうすればいいか分からなかったので、一旦そのままにして次の手順へ。

rake インストール

rakeは既にインストール済み(0.9.2.2)でしたが教えて頂いたとおりインストールしました(11.1.2)。

C:\>gem install rake
Fetching: rake-11.1.2.gem (100%)
Successfully installed rake-11.1.2
1 gem installed
Installing ri documentation for rake-11.1.2...
Installing RDoc documentation for rake-11.1.2...

xmindoc ソースコード入手

C:\>git clone ttps://github.com/sky-y/xmindoc.git
Cloning into 'xmindoc'...
remote: Counting objects: 87, done.
remote: Total 87 (delta 0), reused 0 (delta 0), pack-reused 87
Unpacking objects: 100% (87/87), done.
Checking connectivity... done.

xmindoc.gemspec

入手したxmindocのソースコードにある「xmindoc.gemspec」ファイルを修正します。

ziprubyとなっている部分をziruby1.9に書き換えます(2箇所)」

※このときは気づきませんでしたが、脱字してます。正しくはzipruby1.9です。

ビルド1

ダウンロードしたxmindocのソースコードをビルドします。

C:\>cd xmindoc
C:\xmindoc>rake build
rake aborted!
LoadError: cannot load such file -- bundler/gem_tasks
C:/root/pj/lib/c/xmindoc/Rakefile:1:in `<top (required)>'
(See full trace by running task with --trace)

エラーが発生しました。
どうやら「bundler」というのをインストールする必要がありそうです。
ttp://memoyasu.blogspot.jp/2011/11/rake-aborted-cannot-load-such-file.html
たぶん「rake」が「bundler」を使っているのでしょう。

bundler のインストール

C:\>gem install bundler
Fetching: bundler-1.12.5.gem (100%)
Successfully installed bundler-1.12.5
1 gem installed
Installing ri documentation for bundler-1.12.5...
Installing RDoc documentation for bundler-1.12.5...

ビルド2

再びビルドを試します

C:\xmindoc>rake build
rake aborted!
Unable to determine name from existing gemspec. Use :name => 'gemname' in #insta
ll_tasks to manually set it.
C:/root/pj/lib/c/xmindoc/Rakefile:1:in `<top (required)>'
(See full trace by running task with --trace)

今度は違うエラーです。
「Unable to determine name from existing gemspec.」は
「gemspecが名前を決定することができない」という主旨のエラー。
「Use :name => 'gemname' in #install_tasks to manually set it.」は「名前を手動で設定しろ」と言っているようです。

※以後、追記1ではこのエラーが解決できませんでした。

エラーログから以下のようなキーワードが見つかりました。

  • 「gemspec」とは?
  • 「gemname」とは?
  • 「Rakefile」ファイル?
  • 「< top (required)>」とは?
  • 「rake build --trace」でビルドのトレースログが見れる?

多分rakeでビルドするために何かの名前の解決が必要なのでしょう。
その設定を手動でする必要があるのでしょう。
多分、どこかのファイルを何かしら書き換える必要があるのでしょう。

Rakefile

「Rakefile」というファイルを開いてみたところ、以下の内容でした。

require "bundler/gem_tasks"

エラーログにあったキーワードはありません。

ビルドでのエラーなので、ビルドツールのファイルに何かないかと思い、
「rake-11.1.2/bin/rake」ファイルを見てみました。

rake

begin
  require 'rubygems'
  gem 'rake'
rescue LoadError
end

require 'rake'

Rake.application.run

エラーログにあったキーワードはありません。

rake build --trace

ビルドのトレースが見れるそうなので試してみます。

C:\root\pj\lib\c\xmindoc>rake build --trace
rake aborted!
Unable to determine name from existing gemspec. Use :name => 'gemname' in #insta
ll_tasks to manually set it.
C:/Ruby193/lib/ruby/gems/1.9.1/gems/bundler-1.12.5/lib/bundler/gem_helper.rb:30:
in `initialize'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/bundler-1.12.5/lib/bundler/gem_helper.rb:14:
in `new'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/bundler-1.12.5/lib/bundler/gem_helper.rb:14:
in `install_tasks'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/bundler-1.12.5/lib/bundler/gem_tasks.rb:6:in
 `<top (required)>'
C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `require'
C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `rescue in
require'
C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
C:/root/pj/lib/c/xmindoc/Rakefile:1:in `<top (required)>'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rake-11.1.2/lib/rake/rake_module.rb:28:in `l
oad'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rake-11.1.2/lib/rake/rake_module.rb:28:in `l
oad_rakefile'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rake-11.1.2/lib/rake/application.rb:689:in `
raw_load_rakefile'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rake-11.1.2/lib/rake/application.rb:94:in `b
lock in load_rakefile'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rake-11.1.2/lib/rake/application.rb:176:in `
standard_exception_handling'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rake-11.1.2/lib/rake/application.rb:93:in `l
oad_rakefile'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rake-11.1.2/lib/rake/application.rb:77:in `b
lock in run'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rake-11.1.2/lib/rake/application.rb:176:in `
standard_exception_handling'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rake-11.1.2/lib/rake/application.rb:75:in `r
un'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rake-11.1.2/bin/rake:33:in `<top (required)>
'
C:/Ruby193/bin/rake:23:in `load'
C:/Ruby193/bin/rake:23:in `<main>'

C:\root\pj\lib\c\xmindoc>

エラーログにあったキーワード「< top (required)>」が見つかりました。
「gem_tasks.rb」というファイル名は初めて見ました。
さっそく中身を見てみます。

gem_tasks.rb

# frozen_string_literal: true
require "rake/clean"
CLOBBER.include "pkg"

require "bundler/gem_helper"
Bundler::GemHelper.install_tasks

「Bundler::GemHelper.install_tasks」の部分がエラーログで言っている6行目です。
「in `< top (required)>'」というエラー内容でした。

「install_tasks」というキーワードはエラーログで見ました。
「Use :name => 'gemname' in #install_tasks to manually set it.」です。

多分、インストールした「bundler」のうち「GemHelper」クラスの「install_tasks」というメソッドでエラーが発生しているのでしょう。
「bundler」ファイル一式のどこかに「GemHelper」クラスを定義したファイルがあるのでしょう。

gem_helper.rb

「C:\Ruby193\lib\ruby\gems\1.9.1\gems\bundler-1.12.5\lib\bundler」配下に「gem_helper.rb」というファイルがありました。

中身を見てみると予想どおり「install_tasks」メソッドがありました。ちょっとRubyが読めるようになってきた気がします。

...
module Bundler
  class GemHelper
...
  def install_tasks(opts = {})
    new(opts[:dir], opts[:name]).install
  end

すぐ下に「gemspec」というメソッドもありました。

  def gemspec(&block)
    gemspec = instance.gemspec
    block.call(gemspec) if block
    gemspec
  end

「gemspec」もエラーログにあったキーワードです。
「Unable to determine name from existing gemspec.」です。
「gemspec」とはRubyのメソッドのことだったようです。
ということは「gemspecメソッドから名前を決定することができない」というエラーなのでしょうか。

gemspec

そもそも、gemspecは何の名前を決定するのでしょうか?
決定するとはどういうことなのでしょうか?
ビルドに必要な名前ということは、ソースファイルやライブラリの名前でしょうか?
gemspecはどうやって名前を決定するのでしょうか?
それを「手動で設定する」にはどうすれば可能なのでしょうか?

そういえば、コメント頂いた手順に「xmindoc.gemspec をテキストエディタ(メモ帳以外を推奨)で開いて、ziprubyとなっている部分をziruby1.9に書き換えます」とありました。
「xmindoc.gemspec」に「gemspec」というキーワードがあります。

もしかして、このファイルを読み込んだときのエラーなのでしょうか。
「gemspec」は「[gemでインストールした何かのライブラリ].gemspec」ファイルを読み込むプログラムなのでしょうか。

xmindoc.gemspecファイルを見てみます。

xmindoc.gemspec

# -*- encoding: utf-8 -*-
$:.push File.expand_path("../lib", __FILE__)
require "xmindoc/version"

Gem::Specification.new do |s|
  s.name        = "xmindoc"
  s.version     = Xmindoc::VERSION
  s.authors     = ["Yuki Fujiwara"]
  s.email       = ["sky.y.0079@gmail.com"]
  s.homepage    = ""
  s.summary     = %q{Exports XMind Mindmap to any documents with Pandoc.}
  s.description = %q{Exports XMind Mindmap to any documents with Pandoc.}

  s.rubyforge_project = "xmindoc"

  s.files         = `git ls-files`.split("\n")
  s.test_files    = `git ls-files -- {test,spec,features}/*`.split("\n")
  s.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
  s.require_paths = ["lib"]

  # specify any dependencies here; for example:
  s.add_development_dependency "nokogiri"
  s.add_development_dependency "ziruby1.9"
  s.add_runtime_dependency "nokogiri"
  s.add_runtime_dependency "ziruby1.9"
end

「Gem::Specification.new do |s|」とあります。もしや「gemspec」とは「gem」の「Specification」クラスのことなのでしょうか?
「s.name = "xmindoc"」とあります。「名前を決定できない」とエラーログにありました。でも名前は設定されています。

エラーログには「手動で設定しろ」とありましたので、多分この「xmindoc.gemspec」ファイルをテキストエディタで編集して名前を指定しろという意味なのだと思ったのですが。

でもこの「s.name」ってビルドに関係ない名前に見えます。
多分ビルドに関係ある名前って、ソースファイルやライブラリの名前だと思うのですが。
それらしいところといえば、以下の依存ライブラリを指定している部分だと思います。

  s.add_development_dependency "nokogiri"
  s.add_development_dependency "ziruby1.9"
  s.add_runtime_dependency "nokogiri"
  s.add_runtime_dependency "ziruby1.9"

おや?

脱字

よくよく見てみると「ziruby1.9」になっています。
正しくは「zipruby1.9」ではないでしょうか。

なんということでしょう。コメント頂いた物をそのままコピーしましたが、脱字しておりました。
気づきませんでした。

さっそく2箇所の「ziruby1.9」を「zipruby1.9」に修正して、再度ビルドコマンドを実行します。

C:\xmindoc>rake build
rake aborted!
Unable to determine name from existing gemspec. Use :name => 'gemname' in #insta
ll_tasks to manually set it.
C:/root/pj/lib/c/xmindoc/Rakefile:1:in `<top (required)>'
(See full trace by running task with --trace)

ダメでした。同じエラーです。
「名前が決定できないから手動で設定しろ」というやつです。

念のためトレースログも表示しましたが同じエラーです。

C:\xmindoc>rake build --trace
rake aborted!
Unable to determine name from existing gemspec. Use :name => 'gemname' in #insta
ll_tasks to manually set it.
C:/Ruby193/lib/ruby/gems/1.9.1/gems/bundler-1.12.5/lib/bundler/gem_helper.rb:30:
in `initialize'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/bundler-1.12.5/lib/bundler/gem_helper.rb:14:
in `new'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/bundler-1.12.5/lib/bundler/gem_helper.rb:14:
in `install_tasks'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/bundler-1.12.5/lib/bundler/gem_tasks.rb:6:in
 `<top (required)>'
C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `require'
C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `rescue in
require'
C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
C:/root/pj/lib/c/xmindoc/Rakefile:1:in `<top (required)>'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rake-11.1.2/lib/rake/rake_module.rb:28:in `l
oad'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rake-11.1.2/lib/rake/rake_module.rb:28:in `l
oad_rakefile'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rake-11.1.2/lib/rake/application.rb:689:in `
raw_load_rakefile'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rake-11.1.2/lib/rake/application.rb:94:in `b
lock in load_rakefile'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rake-11.1.2/lib/rake/application.rb:176:in `
standard_exception_handling'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rake-11.1.2/lib/rake/application.rb:93:in `l
oad_rakefile'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rake-11.1.2/lib/rake/application.rb:77:in `b
lock in run'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rake-11.1.2/lib/rake/application.rb:176:in `
standard_exception_handling'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rake-11.1.2/lib/rake/application.rb:75:in `r
un'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rake-11.1.2/bin/rake:33:in `<top (required)>
'
C:/Ruby193/bin/rake:23:in `load'
C:/Ruby193/bin/rake:23:in `<main>'

gemがインストールしたライブラリの名前

そもそも、本当に「zipruby1.9」という名前でいいのでしょうか?
この名前はどこに設定されてあるのでしょう。
gemが管理しているはずです。

「C:\Ruby193\lib\ruby\gems\1.9.1\specifications」フォルダ配下に「zipruby1.9-0.3.6-x86-mswin32.gemspec」というファイルがありました。

中身を見てみます

zipruby1.9-0.3.6-x86-mswin32.gemspec

# -*- encoding: utf-8 -*-

Gem::Specification.new do |s|
  s.name = "zipruby1.9"
  s.version = "0.3.6"
  s.platform = "mswin32"

  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
  s.authors = ["winebarrel"]
  s.date = "2010-01-24"
  s.email = "sgwr_dts@yahoo.co.jp"
  s.extra_rdoc_files = ["README.txt", "zipruby.c", "LICENSE.libzip", "ChangeLog"]
  s.files = ["README.txt", "zipruby.c", "LICENSE.libzip", "ChangeLog"]
  s.homepage = "ttp://zipruby.rubyforge.org"
  s.rdoc_options = ["--title", "Zip/Ruby - Ruby bindings for libzip."]
  s.require_paths = ["lib/i386-mswin32"]
  s.rubyforge_project = "zipruby"
  s.rubygems_version = "1.8.29"
  s.summary = "Ruby bindings for libzip."

  if s.respond_to? :specification_version then
    s.specification_version = 3

    if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
    else
    end
  else
  end
end

「s.name = "zipruby1.9"」という部分があります。
多分これがgemspecが認識できる名前なのでしょう。

このファイルの中身は「xmindoc.gemspec」と似ています。
「.gemspec」ファイルは皆同じ構成なのでしょう。
それにしても、gemspec自体の設定もgemspecファイルでするのですね。

手詰まり

名前は問題なさそうに見えます。
それとも「zipruby1.9-0.3.6-x86-mswin32.gemspec」ファイルは関係なかったのでしょうか?
だとしたら、一体何の名前が決定できないと言っているのでしょうか?

ここで手がかりを失いました。
結局、xmindocのビルドができずにいます。
ビルドが終わったらそのファイルを使ってxmindocをインストールする手はずだったのですが…。


追記2

2016/06/07 16:30頃の追記です。

頂いたコメントにより、gemとライブラリのアップデートをしてからビルドを試してみました。
しかし、同様のエラーでビルドできませんでした。

gem update --system

C:\>gem update --system
Updating rubygems-update
Fetching: rubygems-update-2.6.4.gem (100%)
Successfully installed rubygems-update-2.6.4
Installing RubyGems 2.6.4
RubyGems 2.6.4 installed
Installing ri documentation for rubygems-2.6.4

=== 2.6.3 / 2016-04-05

Minor enhancements:

* Lazily calculate Gem::LoadError exception messages. Pull request #1550
  by Aaron Patterson.
* New fastly cert. Pull request #1548 by David Radcliffe.
* Organize and cleanup SSL certs. Pull request #1555 by James Wen.
* [RubyGems] Make deprecation message for paths= more helpful. Pull
  request #1562 by Samuel Giddins.
* Show default gems when using "gem list". Pull request #1570 by Luis
  Sagastume.

Bug fixes:

* Stub ordering should be consistent regardless of how cache is populated.
  Pull request #1552 by Aaron Patterson.
* Handle cases when the @@stubs variable contains non-stubs. Pull request
  #1558 by Per Lundberg.
* Fix test on Windows for inconsistent temp path. Pull request #1554 by
  Hiroshi Shirosaki.
* Fix `Gem.find_spec_for_exe` picks oldest gem. Pull request #1566 by
  Shinichi Maeshima.
* [Owner] Fallback to email and userid when owner email is missing. Pull
  request #1569 by Samuel Giddins.
* [Installer] Handle nil existing executable. Pull request #1561 by Samuel
  Giddins.
* Allow two digit version numbers in the tests. Pull request #1575 by unak.

=== 2.6.2 / 2016-03-12

Bug fixes:

* Fix wrong version of gem activation for bin stub. Pull request #1527 by
  Aaron Patterson.
* Speed up gem activation failures. Pull request #1539 by Aaron Patterson.
* Fix platform sorting in the resolver. Pull request #1542 by Samuel E.
  Giddins.
* Ensure we unlock the monitor even if try_activate throws. Pull request
  #1538 by Charles Oliver Nutter.


=== 2.6.1 / 2016-02-28

Bug fixes:

* Ensure `default_path` and `home` are set for paths. Pull request #1513
  by Aaron Patterson.
* Restore but deprecate support for Array values on `Gem.paths=`. Pull
  request #1514 by Aaron Patterson.
* Fix invalid gem file preventing gem install from working. Pull request
  #1499 by Luis Sagastume.

=== 2.6.0 / 2016-02-26

Minor enhancements:

* RubyGems now defaults the `gem push` to the gem's "allowed_push_host"
  metadata setting.  Pull request #1486 by Josh Lane.
* Update bundled Molinillo to 0.4.3. Pull request #1493 by Samuel E. Giddins.
* Add version option to gem open command. Pull request #1483 by Hrvoje
  Šimić.
* Feature/add silent flag. Pull request #1455 by Luis Sagastume.
* Allow specifying gem requirements via env variables. Pull request #1472
  by Samuel E. Giddins.

Bug fixes:

* RubyGems now stores `gem push` credentials under the host you signed-in for.
  Pull request #1485 by Josh Lane.
* Move `coding` location to first line. Pull request #1471 by SHIBATA
  Hiroshi.
* [PathSupport] Handle a regexp path separator. Pull request #1469 by
  Samuel E. Giddins.
* Clean up the PathSupport object. Pull request #1094 by Aaron Patterson.
* Join with File::PATH_SEPARATOR in Gem.use_paths. Pull request #1476 by
  Samuel E. Giddins.
* Handle when the gem home and gem path arent set in the config file. Pull
  request #1478 by Samuel E. Giddins.
* Terminate TimeoutHandler. Pull request #1479 by Nobuyoshi Nakada.
* Remove redundant cache. Pull request #1482 by Eileen M. Uchitelle.
* Freeze `Gem::Version@segments` instance variable. Pull request #1487 by
  Ben Dean.
* Gem cleanup is trying to uninstall gems outside GEM_HOME and reporting
  an error after it tries. Pull request #1353 by Luis Sagastume.
* Avoid duplicated sources. Pull request #1489 by Luis Sagastume.
* Better description for quiet flag. Pull request #1491 by Luis Sagastume.
* Raise error if find_by_name returns with nil. Pull request #1494 by
  Zoltán Hegedüs.
* Find_files only from loaded_gems when using gemdeps. Pull request #1277
  by Michal Papis.


------------------------------------------------------------------------------

RubyGems installed the following executables:
        C:/Ruby193/bin/gem

Ruby Interactive (ri) documentation was installed. ri is kind of like man
pages for ruby libraries. You may access it like this:
  ri Classname
  ri Classname.class_method
  ri Classname#instance_method
If you do not wish to install this documentation in the future, use the
--no-document flag, or set it as the default in your ~/.gemrc file. See
'gem help env' for details.

RubyGems system software updated

gem update

C:\>gem update
Updating installed gems
Updating bigdecimal
Fetching: bigdecimal-1.2.7.gem (100%)
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
Successfully installed bigdecimal-1.2.7
Installing ri documentation for bigdecimal-1.2.7
Installing darkfish documentation for bigdecimal-1.2.7
Updating io-console
Fetching: io-console-0.4.6.gem (100%)
ERROR:  Error installing io-console:
        io-console requires Ruby version >= 2.0.0.
Updating json
Fetching: json-1.8.3.gem (100%)
Building native extensions.  This could take a while...
Successfully installed json-1.8.3
unable to convert "\xD1" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to Wind
ows-31J for CHANGES, skipping
unable to convert U+00A9 from UTF-8 to Windows-31J for tests/test_json_encoding.
rb, skipping
unable to convert U+00A9 from UTF-8 to Windows-31J for tests/test_json_unicode.r
b, skipping
unable to convert U+00E4 from UTF-8 to Windows-31J for tools/server.rb, skipping

Installing ri documentation for json-1.8.3
Installing darkfish documentation for json-1.8.3
unable to convert "\xD1" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to Wind
ows-31J for CHANGES, skipping
unable to convert U+00A9 from UTF-8 to Windows-31J for tests/test_json_encoding.
rb, skipping
unable to convert U+00A9 from UTF-8 to Windows-31J for tests/test_json_unicode.r
b, skipping
unable to convert U+00E4 from UTF-8 to Windows-31J for tools/server.rb, skipping

Updating mini_portile2
Fetching: mini_portile2-2.2.0.rc1.gem (100%)
Successfully installed mini_portile2-2.2.0.rc1
Installing ri documentation for mini_portile2-2.2.0.rc1
Installing darkfish documentation for mini_portile2-2.2.0.rc1
Updating minitest
Fetching: minitest-5.9.0.gem (100%)
Successfully installed minitest-5.9.0
Installing ri documentation for minitest-5.9.0
Installing darkfish documentation for minitest-5.9.0
Updating nokogiri
Fetching: pkg-config-1.1.7.gem (100%)
Successfully installed pkg-config-1.1.7
Fetching: mini_portile2-2.1.0.gem (100%)
Successfully installed mini_portile2-2.1.0
Fetching: nokogiri-1.6.8-x86-mingw32.gem (100%)
Nokogiri is built with the packaged libraries: libxml2-2.9.4, libxslt-1.1.29, zl
ib-1.2.8, libiconv-1.14.
Successfully installed nokogiri-1.6.8-x86-mingw32
Installing ri documentation for pkg-config-1.1.7
Installing darkfish documentation for pkg-config-1.1.7
Installing ri documentation for mini_portile2-2.1.0
Installing darkfish documentation for mini_portile2-2.1.0
unable to convert "\xC3" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to Wind
ows-31J for CHANGELOG.rdoc, skipping
unable to convert "\xE2" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to Wind
ows-31J for ext/nokogiri/xml_node_set.c, skipping
Installing ri documentation for nokogiri-1.6.8-x86-mingw32
Installing darkfish documentation for nokogiri-1.6.8-x86-mingw32
unable to convert "\xC3" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to Wind
ows-31J for CHANGELOG.rdoc, skipping
unable to convert "\xE2" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to Wind
ows-31J for ext/nokogiri/xml_node_set.c, skipping
Updating rdoc
Fetching: rdoc-4.2.2.gem (100%)
rdoc's executable "rdoc" conflicts with C:/Ruby193/bin/rdoc
Overwrite the executable? [yN]  y
rdoc's executable "ri" conflicts with C:/Ruby193/bin/ri
Overwrite the executable? [yN]  y
Depending on your version of ruby, you may need to install ruby rdoc/ri data:

<= 1.8.6 : unsupported
 = 1.8.7 : gem install rdoc-data; rdoc-data --install
 = 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!
Successfully installed rdoc-4.2.2
unable to convert U+00A9 from UTF-8 to Windows-31J for lib/rdoc/text.rb, skippin
g
Installing ri documentation for rdoc-4.2.2
Installing darkfish documentation for rdoc-4.2.2
unable to convert U+00A9 from UTF-8 to Windows-31J for lib/rdoc/text.rb, skippin
g
Gems updated: bigdecimal io-console json mini_portile2 minitest mini_portile2 no
kogiri pkg-config rdoc

rake build

C:\xmindoc>rake build
rake aborted!
Unable to determine name from existing gemspec. Use :name => 'gemname' in #insta
ll_tasks to manually set it.
C:/root/pj/lib/c/xmindoc/Rakefile:1:in `<top (required)>'
(See full trace by running task with --trace)

前と同じエラーです。
アップデートしてもビルドできませんでした。

手詰まり

以下を行いましたが、解決の手がかりが見つかりませんでした。

  • gem のアップデート
  • ライブラリ のアップデート
    • xmindocのインストール再挑戦
  • xmindocのアンインストール
    • xmindocのインストール再挑戦
  • Gemfileの調査
  • bundlerの調査

※一部文字数制限のため書けませんでした。

未解決クローズ

未解決ですが、この質問をクローズします。

結論としては、WindowsXPでxmindocは動作させられませんでした。
原因は依存関係が解決できなかったことだと思われます。

環境構築に問題があるせいで動作しないのかもしれません。
私のPCの環境に問題があるのがそもそもの原因だと思われます。

  • Windowsであること
    • Windowsでは環境構築に失敗することが結構あるらしい
      • Linux仮想環境を構築することで解決するらしい
        • 私のPCのメモリが1GBしかなくLinux仮想環境をまともに動作させられない
    • Mac, Linux なら大丈夫らしい
      • 私の手持ちにはありません
  • Windows のバージョンが XP SP3 であること
    • サポート対象外
  • Rubyのバージョンが1.9.3であること(xmindoc動作環境&XPで動作する)
    • ttp://qiita.com/sky_y/items/782cb656ce8b35bc2c9f
    • サポート対象外

環境を見直すことで解決するかもしれません。
質問の主旨から外れるため、ここでクローズします。