Ruby on Railsは短期間でWebシステムを構築できる便利な仕組みです。2004年に公開されて以降、既に10年以上の実績があるフレームワークですが、今も頻繁にアップデートされており、安全に使い続けるためにはアップデートが欠かせません。
しかしフレームワークのアップデートは大きなリスクを伴います。事前にしっかい準備し、リスクを回避できるスキルを身につけなければなりません。今回はRuby on Railsをアップデートする手順とリスクを回避する方法について解説します。
Ruby on Railsのアップデートの必要性
Ruby on Railsは、オープンソースで今も活発に開発が続けられているWebアプリケーションのためのフレームワークです。そしてRuby on RailsはRubyの短く読みやすいプログラムを書けるメリットを活かしたフレームワークであり、多くのWebシステム開発に採用されています。
なお活発に開発が続けられているRuby on Railsは頻繁に機能追加やバグの修正が実施されています。そのため、もしRuby on Railsを採用したWebシステムを安全に運用するためには計画的なアップデートが必要です。次からRuby on Railsのアップデートの必要性を解説します。
Ruby on Railsを採用するメリット
Ruby on Railsを採用するメリットは幾つもありますが、インターネット上に日本語の情報が多く、さらにコミュニティー活動が活発な点は見逃せません。自社で解決できない問題でもコミュニティーに問い合わせれば解決できるケースもあります。
また、Ruby on Rails自体、Webシステム開発で使われる多くの機能を含んでいますが、Webシステムの開発に利用できるライブラリが数多く開発されRubyGemsで公開されています。そして、それらをRuby on Railsに組み合わせることでコストをかけずにWebシステムを開発できる点もメリットです。。
旧バージョンを使うデメリット
先ほどRuby on Railsのメリットを紹介しましたが、コミュニティーに問い合わせしたり、RubyGemsで公開されているライブラリを利用するには、最も多く使われているバージョンの利用が前提になるので注意してください。
例えば、ある特定のバージョンと外部ライブラリの組み合わせでのみ発生する不具合は、コミュニティーに問い合わせしても解決できないかもしれません。そうなれば解決するために優秀なエンジニアをアサインしなければならないなど、違った対策が必要です。
さらに古いバージョンにはセキュリティ問題が含まれるので、古いバージョンを使い続けるのはデメリットでしかありません。計画的に新しいバージョンにアップデートしてください。
アップデート計画の検討を
Ruby on Railsをアップデートしたいと思っても、今稼働中のシステムでそのフレームワークをアップデートするのは簡単ではありません。フレームワークのアップデートにより予想外のトラブルが発生する可能性もあります。
そのため、事前にテストを実施し、安全にアップデートする手順をチェックしてから、本番環境に適用する、といったアップデート計画が必要です。さらにアップデートのためにエンジニアを確保したりテスト環境を用意するなど、アップデートにかかる費用を見込んだ計画を検討してください。
Ruby on Railsをアップデートする方法
先ほど紹介したようにRuby on Railsを利用したWebシステムを運用するには、古いバージョンを使い続けるのではなく、計画的にアップデートを実施しなければなりません。次からRuby on Railsをその方法について紹介します。
Webシステムの動作保証
Ruby on Railsに限らず、今動作しているWebシステムの動作環境を変更したことで誤動作することがあってはなりません。テスト環境を作り、全ての機能が動作することをチェックしたうえで、本番環境を変更するのが基本です。
Ruby on Railsをアップデートする場合、まず正常に動作するかをチェックする仕組みを準備してください。そのためにはテスト項目を記載したドキュメントや、それに基づいて作成されたテストコードが必要です。このようなWebシステムの動作を保証する仕組みを準備してください。
Ruby on Railsをアップデートする
Ruby on RailsはWebシステムを構築する際によく使われる機能を集めたライブラリの集合体です。Ruby on Railsがアップデートされると、そのような多くのライブラリの中のいずれかが更新されます。そしてライブラリには依存関係があり、依存関係に問題があるとWebシステムは正常に動作しません。
そのためRuby on Railsをアップデートするなら、実行する前に使っているRubyGemsのライブラリの依存関係をチェックしてださい。なおRubyGemsの依存関係のチェックはbundle updateコマンドを使います。そして問題のあるライブラリが見つかったら、そのライブラリも更新してください。
$ bundle update
Ruby on Railsには、アップデート用にapp:updateコマンドが用意されています。Gemfileに記載されたバージョンを書き換えた後、railsにこのコマンドを指定してください。
app:updateコマンドの実行
$ rails app:update
テストが全てパスするまでデバック
Ruby on Railsをアップデートしたら、先ほど用意したテストコードを利用してWebシステムをテストします。アップデートしたことでエラーが発生するかもしれません。全てのエラーが無くなるまでデバックしてください。
またRuby on Railsをアップデートしたことで、RubyGemsから導入したライブラリが誤動作することもあります。その場合、アップデート後のRuby on Railsに対応したバージョンを探して入れ替える、といった対処も必要です。
そして、全てのエラーが無くなり、全てのテストがパスできたら本番環境を入れ替えてください。
アップデートをスムーズに進めるには
Ruby on RailsをアップデートしたらWebシステムが動作しなくなり、復旧するのにかなりの時間がかかった、というケースもあります。そのためアップデートによるリスク管理が欠かせません。アップデートをスムーズに進めるには、アップデートを前提にした事前作業が必要です。
次から、Ruby on Railsのアップデートをスムーズに進めるために、やってほしい作業について紹介します。
依存関係をこまめにチェックする
Ruby on Railsを利用したwebシステムでは、サードパーティー製のライブラリも同時に使っているのケースも多いでしょう。Ruby on Railsをアップデートしたらそのようなライブラリも更新が必要です。
なお、サードパーティー製のライブラリのアップデートが必要かどうかの判断は、ライブラリの依存関係をチェックにより確認します。そして必要ならRuby on Railsのバージョンに合ったライブラリに入れ替えます。
長くアップデートしていない場合、依存関係をチェックすると多くの不一致が発生します。そうなると依存関係を修復するのが面倒です。こまめにチェックしてその都度修復しておきましょう。
リリースノートをチェックする
Ruby on Railsに限らず、フレームワークのバージョンを最新に保つコツは、リリースノートをチェックして、更新により影響のある機能を把握することです。そして必要に応じて該当するソースコードを見直したり、テストできるように準備してください。
また、影響の有無を判断するには使っているライブラリの機能を理解していなければなりません。RubyGemsからダウンロードしたライブラリのリリースノートをチェックしておきましょう。
まとめ
Ruby on Railsは、短期間でWebシステムを構築できる便利なフレームワークですが、更新が早く脆弱性の問題もあるので安全に使い続けるためにはアップデートが欠かせません。
しかしフレームワークをアップデートするとWebシステムが正常に動作しなくなる可能性があるなどリスクを伴います。アップデートするにはリスクを回避するための準備が必要です。
さらにドキュメントとリリースノートにしっかり目を通し、アップデートによる影響を正しく把握できるにスキルを身に付けましょう。
Ruby on Railsのリリースノートは公式サイトで公開されているので、定期的にチェックしてください。
Releases | Riding Rails