2017/12/23 08:49
|
本ブログが6時間休む理由・railsのversionを更新した話
|
当サイトのrailsのバージョンが、4.1.1で少し古かったことがあったので、バージョンアップ。
割りと作業が大変だったので備忘録を残しておきます。
#### やったこと
- Ruby 2.2.1 -> 2.4.3
- Rails 4.1.7 -> 4.2.10
#### herokuのrubyサポート調査
[link](https://devcenter.heroku.com/articles/ruby-support)を参考にruby / railsの対応バージョンを確認
#### GemFile更新
```sh
source 'https://rubygems.org'
ruby '2.4.3'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.10'
...
```
#### bundle update実行
```sh
#% bundle update disqus (git)-[rails-v5-update]
Fetching gem metadata from https://rubygems.org/..........
Fetching gem metadata from https://rubygems.org/.
...
for inspection.
Results logged to
/Users/acto_mini/.rbenv/versions/2.4.3/lib/ruby/gems/2.4.0/extensions/x86_64-darwin-17/2.4.0-static/libv8-3.16.14.19/gem_make.out
An error occurred while installing libv8 (3.16.14.19), and Bundler
cannot continue.
Make sure that `gem install libv8 -v '3.16.14.19'` succeeds before
bundling.
In Gemfile:
therubyracer was resolved to 0.12.3, which depends on
libv8
...
```
何やらよくわからないエラーが・・・
更に、ここに書いてあるコマンドでlibv8をインストールしようとしても失敗してしまいます。
[link](https://qiita.com/rneuo/items/9d884bc4302babcb3d53)のリンクの記事を参考にtherubyracerをインストールすることで解決しました。
要はgccのバージョンの古さを起因として問題であって、gccの再インストールによって *bundle install* は成功するようになります。
#### Rails 5系に移行しなかった理由
acts-as-taggable-on など本ブログでよく使っているgemの依存解決が難しかったため、とりあえず5.x系への移行は諦めました。
特段使いたい機能も無かったですし、4.x系の中でも最新のものでセキュリティリスクを回避できると思われます。
#### Rails + herokuという選択肢について
本ブログはheroku上で 無料運用されています。
24時間運用するのであれば 1dynoという単位の金額を毎月払う必要がありますが、
> ![スクリーンショット 2017-12-23 8.41.17.undefined](https://res.cloudinary.com/hhokqdeq5/image/upload/v1513986098/j95yclpeq94x8mhtxqsy.png)
> 2017/12/23現在
> [Pricing heroku](https://www.heroku.com/pricing)
Freeプランであれば、1日のうち6時間プロセスを中止させることで同様の環境で運用できます。
プロセスの死活管理はProcess Schedularというherokuプラグインを使います。
![スクリーンショット 2017-12-23 8.43.40.undefined](https://res.cloudinary.com/hhokqdeq5/image/upload/v1513986266/wlaedj9a8qh45nuv9g5u.png)
6時間も休むサイトということで色々と問題があるように思えますが・・・。
ただ、heroku でのブログ運用という観点で見ると
- およそ $7/month で安価に運用(もしくは無料で運用)
- ruby, railsは殆ど最新版がサポートされる
ということを考えると、悪い選択肢とも言えないですね。
ただ、最近はnode.jsなどに自分の興味が移っていることから、移行することも考えています。