いかたけの備忘録

忘れっぽい

ライフゲームbotの物品作成機能が復活しました。

はじめに、ライフゲームbotの物品作成機能が停止しておりました。申し訳ありませんでした。とりあえず復旧させましたので、使えると思います。

ライフゲームbot - しめり蒸気

以下に作業時の記録を残しておきます。ここは備忘録なので。

 SUZURIというデータから物品を作成して売ってくれるサービスがあります。同様のサービスは他にもあるんですが、SUZURIはAPIが有るのでプログラムから叩くことができて便利です。ライフゲームbotの物品作成機能はSUZURIのAPIを叩くことで実現しています。

今回のエラーはSUZURIのAPIを叩く箇所で発生していました。出てきたエラーはこういう感じでした。

/home/ikatake/local/rbenv/versions/2.4.0/lib/ruby/2.4.0/net/protocol.rb:44:in `connect_nonblock': SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: sslv3 alert handshake failure (Faraday::SSLError)

SSL全然わからんので困った。調べた所によると、証明書を落としてきて、そのパスをsslのca_pathに渡すと良い。と言ったことが書かれていましたが、うまくいきませんでした。ちょうど仕事が忙しい時期になったので放置してしまっていました。

その後、ウェッパに行ったときにid:hisaichi5518さんにちょっと話を聞いてみたところ「SUZURIの運営に聞いてみたら良いのでは。」とのことでしたので聞くことにしました。(余談ですが、私「SUZURIのAPIって使ってる人いるですかね?」ひさいちさん「あまり居ないと思います。」との会話がありました。みんな使おう。)

SUZURIのサポートにメールを送付したところ「sslのversionをSSLv23にすると良いですよ。」と丁寧に教えていただきました。ありがとうございます。(余談ですがなお、SUZURIのAPIのページは問合せ先がSUZURIのマスコットキャラクター忍者スリスリくんのTwitterで、サポートのメールアドレスでは無いのがちょっとややこしいですね。)

やってみたところエラーは解消されず、ただ内容が変わっていました。

/home/ikatake/local/rbenv/versions/2.4.0/lib/ruby/2.4.0/net/protocol.rb:44:in `connect_nonblock': SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: tlsv1 alert protocol version (Faraday::SSLError)

わからなくなってきたので、別のページで「Rubyのバージョンが古いと発生する。」と書いてあったのを頼りにバージョンを上げることにしました。

まずrbenvとruby-buildを入れた箇所でgit pullします。

[ikatake@www1928 ~/local/rbenv/plugins/ruby-build]$ git pull

[ikatake@www1928 ~/local/rbenv]$ git pull

 インストールできるバージョンを確認します。

[ikatake@www1928 ~/local/rbenv]$ rbenv install --list

2.7.0-devまでリストに上がってくるのを確認しました。2.6.0を入れることにしましょう。

[ikatake@www1928 ~/local/rbenv]$ rbenv install 2.6.0

で、大事なく進むであろうと思っていたらエラーになりました。

BUILD FAILED (FreeBSD 9.1-RELEASE-p24 using ruby-build 20181225-1-g095d9db)

Inspect or clean up the working tree at /home/ikatake/tmp/ruby-build.20190103170320.3317
Results logged to /home/ikatake/tmp/ruby-build.20190103170320.3317.log

Last 10 log lines:
xmlrpc 0.3.0
installing rdoc: /home/ikatake/local/rbenv/versions/2.6.0/share/ri/2.6.0/system
installing html-docs: /home/ikatake/local/rbenv/versions/2.6.0/share/doc/ruby
installing capi-docs: /home/ikatake/local/rbenv/versions/2.6.0/share/doc/ruby
The Ruby openssl extension was not compiled.
ERROR: Ruby install aborted due to missing extensions
Configure options used:
--prefix=/home/ikatake/local/rbenv/versions/2.6.0
LDFLAGS=-L/home/ikatake/local/rbenv/versions/2.6.0/lib
CPPFLAGS=-I/home/ikatake/local/rbenv/versions/2.6.0/include

 openssl関係でこけているようです。今回SSL関係で困りすぎでは。で、以下のページを参考にしました。

[ruby-list:50510] OpenSSL::X509::DEFAULT_CERT_FILE の上書き方法

[ikatake@www1928 ~/local/rbenv]$ RUBY_CONFIGURE_OPTS='--with-openssl-dir=/usr/local/ssl' rbenv install 2.6.0

で、入っていることが確認できました。

[ikatake@www1928 ~/local]$ rbenv versions
system
* 2.4.0 (set by /home/ikatake/local/rbenv/version)
2.6.0

インストール時と同じようにrehashしてglobalのバージョン指定をしておきます。

[ikatake@www1928 ~/local]$ rbenv rehash
[ikatake@www1928 ~/local/rbenv/plugins]$ rbenv global 2.6.0

rubySSLの設定もレンタルサーバのcert.pemを指しているのでよさそう。

 [ikatake@www1928 ~/local/rbenv/plugins]$ ruby -ropenssl -e 'p OpenSSL::X509::DEFAULT_CERT_FILE'
"/usr/local/ssl/etc/ssl/cert.pem"
[ikatake@www1928 ~/local/rbenv/plugins]$ ls -l /usr/local/ssl/etc/ssl/cert.pem 

ちなみにgemを入れ直す必要があるみたいですので、抜かりなく。

[ikatake@www1928 ~/www/wetsteam/lifegamebot]$ gem install faraday
[ikatake@www1928 ~/www/wetsteam/lifegamebot]$ gem install rmagick
[ikatake@www1928 ~/www/wetsteam/lifegamebot]$ gem instal chunky_png 

 今気づいたんですが、chunky_pngを入れるときにコマンドミスってますが、普通にインストールされてましたね。配慮がすごい。
以上で作業は完了しました。SSL周りよくわかっていないので勉強する必要がある。ひさいちさんやGOペパボの担当者の人にお世話になりながらなんとか解決できた。