Rails4.1.6でbootswatchを導入したときにSSLエラーで詰まった話
こんばんは、aokabinです。
現在卒業研究でRails4.1.6を使ったアプリケーションを作ろうと思っているときに、bootswatchのcosmoを導入しようとしたのですが、importをするときに謎のSSLエラーに巻き込まれていました…
Ruby on rails4系でBootstrap系のthemeを使うときに詰まった - Entertainer Engineering
こちらに書いてあるように、importって何やねん…となっていました。
実は上の記事でもcosmoを導入していたつもりだったのですが、デフォルトのbootstrapしか適用できていない事が判明しまして…申し訳ありません。
さて、上記の記事にも書いてあるようにimportをしていた際にエラーが吐かれていました。
エラーログは割愛しますが、
OpenSSL::SSL::SSLError SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
こんな感じのエラーが吐かれました。
ショックがハンパじゃなかったですね。
という訳で対策を書いていきます。
CA証明書を参照できるようにする
SSLエラーで言われているのは、とにかく”証明書が参照できねえよ!”ということらしいので、参照できるようにしてあげればいいわけです。
irbコマンドで、opensslが参照している証明書の場所を確認してみましょう!
irb
> require 'openssl' > p OpenSSL::X509::DEFAULT_CERT_FILE "/opt/local/etc/openssl/cert.pem"
すると、cert.pemへのパス情報が表示されると思います。(今回のパス情報は一例です)
そのパスをコピーしておきましょう。
そして、証明書がちゃんと存在しているかをcatコマンドで確認してみましょう。
cat /opt/local/etc/openssl/cert.pem
もし何もなければ、それは証明書を参照できていないので、cert.pemを用意してあげる必要があります。(それ以外の問題でしたら、ちょっとわかりません、ごめんなさい)
先ほどのパス(上記の場合/opt/local/etc/openssl)へと移動して、cert.pemをDLしましょう。
cd /opt/local/etc/openssl sudo wget http://curl.haxx.se/ca/cacert.pem sudo mv cacert.pem cert.pem
もしwgetでDLできなければ、curlやらscpやらを使ってなんとか/opt/local/etc/openssl/の中にcert.pemを入れこんであげましょう。
ねんのためcatでファイルの存在を確認
cat /opt/local/etc/openssl/cert.pem
コマンドを実行した後に、暗号化された文字列が表示されたらおそらくopensslから証明書を参照する事ができていると思います。
できていなければもう一度手順をやり直してみてください。
さて、この状態でbootswatchを試してみましょう。
rails new cosmo cd cosmo/ vim Gemfile
Gemfileをエディタで開いたら
gem 'libv8', '~>3.11.8.13' gem 'twitter-bootswatch-rails', '~> 3.2.0' gem 'twitter-bootswatch-rails-helpers' gem 'execjs' gem 'less-rails'
これらを書き込んで上書き保存。(vimなら :wq)
bundle install #エラーがでない事を確認 rails g bootswatch:install cosmo rails g bootswatch:import cosmo rails g bootswatch:layout cosmo
これでテンプレートが出来上がったかと思います。
実際に出来上がっているかを確認するため、
app/views/layouts/のcosmo.html.erbをindex.html.erbに改名、そして
rails g controller layouts
を実行
config/routes.rbファイルを開いて
resources :layouts
を記述、最後に
rake routes rails s
これでhttp://localhost:3000/layoutsにアクセスしてみましょう。
このような画面が表示されていればおkです!
しかしこの間は間違った記事を出してしまった事を深く反省しております。
これでうまくいったり行かなかったりしたらコメントいただければ幸いです!