###前提・実現したいこと
httpclientを利用しhttpsのサイトへ接続するスクリプトを、Railsのrunnerコマンドで実行したい。
###発生している問題・エラーメッセージ
httpsのサイトへ接続し、レスポンスを取得するだけという単純なスクリプト(下記参照)ですが、Railsのrunnerコマンドで実行すると以下のようなエラーが発生します。
C:/Ruby23/lib/ruby/gems/2.3.0/gems/httpclient-2.8.3/lib/httpclient/ssl_socket.rb :103:in `connect': SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read se rver hello A (OpenSSL::SSL::SSLError)
エラー内容を見る限り、SSL証明書が見つけられず接続に失敗しているみたいなのですが、そもそもrunnerコマンドではなくrubyコマンドで実行すればエラーが出ることなく実行できます。
具体的には
rails runner batch.rb -> 上記のエラー
ruby batch.rb -> 正常に動作
何故rubyコマンドで実行すると正常に動作して、runnerコマンドで実行するとSSL証明書が見つけられなくなるのかわからないので非常に困ってます。
###該当のソースコード
Ruby
1require 'rubygems' 2require 'open-uri' 3require 'openssl' 4require 'httpclient' 5 6class Batch 7 def self.execute 8 url = 'httpsサイトのURL' 9 client = HTTPClient.new 10 puts client.get(URI.parse(url)).body 11 end 12end 13 14Batch.execute
###試したこと
SSL接続ができない時の対処法(SSL認証を行わないように設定する、証明書の場所を明示的に示すなど)は一通りやりましたが解決しませんでした。
そもそもrubyコマンドでは正常に動作している以上、コードに問題があるのではなくRailsの環境に問題があると思うのでconfig/application.rbやconfig/environments/development.rbあたりをいじれば解決するのかなと思いますが正直全く見当つきません。
###補足情報(言語/FW/ツール等のバージョンなど)
Rails 4.2.7.1
ruby 2.3.3
httpclient 2.8.3
あなたの回答
tips
プレビュー