26470
# xmindocが動作しない

前回の質問でWindowsXPにRubyをインストールできました。  
[Rubyのgemでxmindocがインストールできない【WindowsXP】](https://ja.stackoverflow.com/questions/25449/ruby%E3%81%AEgem%E3%81%A7xmindoc%E3%81%8C%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84-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.」は「名前を手動で設定しろ」と言っているようです。

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

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

  * 「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
    * サポート対象外

環境を見直すことで解決するかもしれません。  
質問の主旨から外れるため、ここでクローズします。
CC BY-SA 3.0
2016-06-05T08:28:03.910
26468
2016-06-07T07:51:46.077
2017-04-13T12:52:38.920
-1
15754
question
ruby windows
Windows XPでxmindocが動作しない
依存関係を無視してうまくいくんじゃないかと思ったのですが、駄目なようですね。xmindoc の依存関係が zipruby1.9
を見に行くように書き換えてるしかないかと思います。

  1. [git for Windows](https://git-for-windows.github.io/) をインストールしておきます。
  2. `gem install rake` で rake をインストールしておきます。
  3. 適当なディレクトリに xmindoc をクローンします。(Gitをインストールする前にコマンドプロンプトを起動している場合は、起動し直して下さい。そうしないとPATHが通りません。)
```     git clone https://github.com/sky-y/xmindoc.git

    
```

  4. クローンした xmindoc ディレクトリにある xmindoc.gemspec をテキストエディタ(メモ帳以外を推奨)で開いて、`zipruby` となっている部分を `zipruby1.9` に書き換えます(2箇所)。
  5. xmindoc ディレクトリの中でビルドしてインストールします。
```     cd xmindoc

    rake build
    gem install pkg/xmindoc-0.0.7.gem
    
```

実施する前に、 xmindoc はアンインストールしておいてください。
CC BY-SA 3.0
2016-06-05T11:09:22.883
26470
2016-06-06T21:30:19.890
2016-06-06T21:30:19.890
7347
7347
26468
answer