IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

Ruby on Rails 海外事情コラム

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第43回 Rails 6の知られざる機能 (野田貴子) 2019年4月

Rails 6のベータ版がリリースされ、すでに新しい機能を試された方も多いことでしょう。今回は、そんな新機能の中からまだあまり知られていなさそうなものを列挙したブログをご紹介します。

Rails 6 Unnoticed Features
https://drivy.engineering/rails-6-unnoticed-features/

要件が変更されました

Rails 5.2にてRubyは2.2.2ではなく2.5.0の最小バージョンが必要になりました。データベースはMySQL 5.5.8、PostgreSQL 9.3、SQLite 3.8に対応しました。

Webpackerがデフォルトになりました

Rails 5.1でWebpackerがマージされ、JavaScriptファイル用のWebpackにより最新のアセットパイプラインが提供されるようになりました。Rails 6より前では--webpackerオプションを使用してアプリケーションを生成する必要がありましたが、今はWebpackerがデフォルトになり、Sprockets(今でもCSSと画像を読み込むためにこれが必要ですが)の代わりにRailsで最新のアセットパイプラインを使用できるようになりつつあります。

環境ごとの暗号化された認証情報がサポートされました

Rails 5.1では暗号化された認証情報が導入されました。これはパスワードやAPIキーなどを含むファイルであり、ENV['RAILS_MASTER_KEY']を安全に保管するだけでこの情報を安全に共有することができるようになりました。しかしこれは複数の環境ごとにそれぞれの認証情報を保持することができない問題がありましたが、今、環境ごとに特定の暗号化されたファイルを持つことができるようになりました。

DNSガードとしてホストのホワイトリストを使用できるようになりました

Rails 6でActionDispatch::HostAuthorizationという新しいミドルウェアが追加されました。これにより、アプリケーション用にいくつかのホストをホワイトリストに登録してHostヘッダー攻撃を防ぐことができるようになりました。StringIPAddrProcRegExp(ワイルドカードのドメインを扱う場合に便利です)を使って簡単に設定することができます。

機密パラメータがフィルタリングできるようになりました

ログやコンソールなどから隠したい機密データがある場合は、機密属性に一致するStringRegExpのリストを使用して、ActiveRecord::Base::filter_attributesを設定できるようになりました。

時間比較が簡単になりました

DateDateTimeTimeは、従来の演算子を使わずに比較できるメソッドが使えるようになりました。読みやすくなりました。

rental_1.starts_at.after? rental_2.ends_at # => true
rental_1.starts_at.before? rental_2.ends_at # => false
MySQLのデフォルトにUtf8mb4を指定できるようになりました

ユーザーはいたるところで絵文字を入力しています。みなさんもデータベースに絵文字を挿入する機能のところで問題が発生したことがきっとあるでしょう。Utf8の代わりにUtf8mb4をデフォルトとして設定すると、この問題は解決します。これはアジアや数学の文字などを処理する必要がある場合にも役立ちます。ただ、古いテーブルを手動で移行する必要があることに注意してください。

システムデータベースの変更が簡単になりました

データベースをデフォルトのSQLiteから例えばPostgreSQLに変更する必要が、プロジェクトの初期段階であったかもしれませんが、これはRailsアプリケーションに適切な設定ファイルとテンプレートを用意していないと面倒な作業になる可能性があります。今後はそれらのファイルを用意するために適切なデータベースを使用して新しいRailsアプリケーションを生成する必要がなくなりました。rails db:system:changeを使ってください。

アプリの起動方法が変わりました

今まで通りRailsサーバーを起動するとエラーが発生しますか? rails serverコマンドはサーバー名をRack引数として渡さなくなりましたが-uオプションは使用しています。 次のようにしてサーバを起動してください。rails server -u puma


紹介されているすべての機能をご覧になりたい方はリンク先のサイトをご確認ください。もちろんそれ以外にも多くの機能追加・変更がRails 6にはありました!

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes