CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
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に対応しました。
Rails 5.1でWebpackerがマージされ、JavaScriptファイル用のWebpackにより最新のアセットパイプラインが提供されるようになりました。Rails 6より前では--webpacker
オプションを使用してアプリケーションを生成する必要がありましたが、今はWebpackerがデフォルトになり、Sprockets(今でもCSSと画像を読み込むためにこれが必要ですが)の代わりにRailsで最新のアセットパイプラインを使用できるようになりつつあります。
Rails 5.1では暗号化された認証情報が導入されました。これはパスワードやAPIキーなどを含むファイルであり、ENV['RAILS_MASTER_KEY']
を安全に保管するだけでこの情報を安全に共有することができるようになりました。しかしこれは複数の環境ごとにそれぞれの認証情報を保持することができない問題がありましたが、今、環境ごとに特定の暗号化されたファイルを持つことができるようになりました。
Rails 6でActionDispatch::HostAuthorization
という新しいミドルウェアが追加されました。これにより、アプリケーション用にいくつかのホストをホワイトリストに登録してHostヘッダー攻撃を防ぐことができるようになりました。String
、IPAddr
、Proc
、RegExp
(ワイルドカードのドメインを扱う場合に便利です)を使って簡単に設定することができます。
ログやコンソールなどから隠したい機密データがある場合は、機密属性に一致するString
やRegExp
のリストを使用して、ActiveRecord::Base::filter_attributes
を設定できるようになりました。
Date
、DateTime
、Time
は、従来の演算子を使わずに比較できるメソッドが使えるようになりました。読みやすくなりました。
rental_1.starts_at.after? rental_2.ends_at # => true
rental_1.starts_at.before? rental_2.ends_at # => false
ユーザーはいたるところで絵文字を入力しています。みなさんもデータベースに絵文字を挿入する機能のところで問題が発生したことがきっとあるでしょう。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