会社のPCが一日三回くらいBSOD(死のブルースクリーン)に陥るので、初期化を実施しました。この際、3.2.0-0を現時点の最新版に更新。

やっぱり一筋縄ではいかない

自作のRedArmoryがあるので、データベースやプラグインの退避と復元は良いのですが、マイグレーションは相変わらず面倒。

マイグレーションもバッチを組んでいるので、そこまで苦ではないのですが、はまるところには本当にはまります。

git cloneが動かない

会社のPCには知識DBとしてredmine_knowledgebaseを使っています。

ですが、このソフトもそれなりに導入に際してトラブルが多いです。
もちろん、トラブルを乗り越える価値は絶対にあります。

久しぶりにPCを初期化して0から環境を構築したので、すんなりマイグレーションできなかったわけです。

で、何が問題かというと、bundle installで依存gemを自動で持ってくるようにしたのですが、これが失敗するんです。
まず、redmine_knowledgebaseのgemspecはredmine_acts_as_taggable_onというgemを持ってこようとします。

この際、gitを使ってCloneするのですが、**git://**というプロトコルで通信するため、会社の通信環境では通らないわけです。
しかもporxyのおまけ付き。これは別にいいです。
下記のコマンドでgitプロトコルを強制的にhttpsアクセスに切り替えています。

1
git config --global url."https://".insteadOf git://

また、下記のコマンドでproxyを有効にします。

1
git config --global http.proxy http://proxy.example.com:8080

ここまでこれば普通に動くはずなんです。
が、動かない。bundle installでredmine_acts_as_taggable_onを持ってくるのに失敗する。
エラーの出力も、具体的なエラーを出さない。

dllが古い

さて、悩むこと2時間。
何が原因だったのか、というと思い出しました。

原因は、OpenSSLまわりのdllが古いことでした。libeay32が古いせいか、git-remot-https.exeがコールしようとしているAPIが存在しないため、cloneに失敗していたようです。
プロシージャ エントリ ポイント XXXXXXX がダイナミック リンク ライブラリ LIBEAY32.dll から見つかりませんでした。ってやつです。

どうしてこうなるのかわかりませんが、なるものは仕方ないですので、対応策です。
ただ、これは応急処置というか、システムの依存関係を壊すかもしれないので注意です。

上記ページから、環境に合わせたzipをダウンロードしてきてください。最新版です。

Windowsの32bitなら、openssl-1.0.2h-i386-win32.zip、64bitならopenssl-1.0.2h-x64_86-win64.zipです。

これを解凍して、systemフォルダに突っ込みますが、32bit環境なら、C:\Windows\System32、64bit環境ならC:\Windows\SysWOW64にコピーしてください。64bit環境は32bit版もインストールしておいた方が良いかもしれません。

これで、bundle installのgit cloneが成功し、関連するgemを全部引っ張ってきてredmine_knowledgebaseのインストールに成功します。