会社の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のインストールに成功します。