TO REDUCE RESPONSE TIME OF THE FIRST REQUEST RESPONSE TIME OF THE FIRST REQUEST eager_load = trueの場合に、各controllerのactionメソッ ドをサーバ起動時に読む込むよう変更 元々は最初のリクエスト実行時に読みこむようになってい たが、それだと最初のリクエストのreponse timeが遅くな ってしまう為、それを避ける為、サーバ起動時に読みこむよ うになりました
TO COOKIES AND FRESHEN EXPIRES OPTION TO SUPPORT DURATION EXPIRES OPTION TO SUPPORT DURATION signed/encrypted cookiesに有効期限が指定出来るよ うになった # Sets a cookie that expires in 1 hour. cookies[:login] = { value: "XJ-122", expires: 1.hour } # Sets a cookie that expires at a specific time. cookies[:login] = { value: "XJ-122", expires: Time.utc(2020, 10, 15, 有効期限後は値が読み込めなくなる
MESSAGEENCRYPTOR AND MESSAGEVERIFIER AND SIMPLIFY THE COOKIES MESSAGEVERIFIER AND SIMPLIFY THE COOKIES MIDDLEWARE MIDDLEWARE これを利用してEncrypted Cookies及びSigned Cookies のkeyのrotationが出来るようになった # signed cookies を SHA1 から SHA256に変更する場合 Rails.application.config.action_dispatch.signed_cookie_digest = "SHA2 Rails.application.config.action_dispatch.cookies_rotations.tap do |co cookies.rotate :signed, digest: "SHA1" end
DRIVER TO SYSTEM TESTS System testにheadless chrome driverのサポートが追 加された class DrivenBySeleniumWithHeadlessChrome < ActionDispatch::SystemTest driven_by :selenium, using: :headless_chrome end headless refox driverのサポートも追加された Add headless refox driver to System Tests
GENERATE DEFAULT ALT TEXT FOR IMAGES imageタグを生成する際、デフォルトではalt属性を生成し ないようになった 元々は、image_tag "logo.png"だと、下記のようなHTML が生成されていた <img src="/images/logo.png" alt="Logo" />
GENERATE DEFAULT ALT TEXT FOR IMAGES 上記の場合、スクリーンリーダーは、"Logo"というテキスト を読みあげる が、これは実際は何も意味もない情報(logo.pngが会社の ロゴならその会社名が読み上げらないと意味が無い) というわけで、デフォルトで生成されるalt属性には意味が ない、どころが邪魔になってしまっている、という事でデフォ ルトではalt属性を生成しないようにしたとの事
A PROC OR SYMBOL AS AN ARGUMENT TO LENGTH VALIDATOR VALUES ARGUMENT TO LENGTH VALIDATOR VALUES length validatorにProc, Symbolが渡せるようになった class Topic include ActiveModel::Validations attr_accessor :title, :foo validates :title, length: { maximum: ->(topic) { topic.max_length_f def max_length_for_title if foo 5 else 10 end end
Model配下に移動された これにより、Active Modeldでもattributes APIが使えるようには っている ただ、まだpublic APIではないからね Start bringing attributes API to AM Move Attribute and AttributeSet to ActiveModel https://github.com/rails/rails/pull/31848#issuecomm 362130685
IN DANGEROUS AR METHODS 5.2時点ではdeprecateメッセージが表示されるだ、6.0で はUnknownAttributeReferenceがraiseされるようになる 引続き生SQLを渡すようにしたい場合、 ActiveRecord::Base.allow_unsafe_raw_sql に:disabledを指定すればOK
CALL SITE FOR AN ACTIVERECORD QUERY ACTIVERECORD QUERY Active Recordのqueryが発行された際のcallersをログに 表示するするようになった # log/development.log User Load (0.2ms) SELECT "users".* FROM "users" ↳ app/views/users/index.html.erb:14 ようは 表示されるのはserverのログでだけ(rails consoleでは出 ない) active-record-query-trace
TO MIGRATIONS migrationにupのときだけ使用出来るup_onlyメソッドが追 加された class AddPublishedToPosts < ActiveRecord::Migration[5.2] def change add_column :posts, :published, :boolean, default: false up_only do execute "update posts set published = 'true'" end end end
StatementTimeout which will be raised when statement timeout exceeded Add new error class QueryCanceled which will be raised when canceling statement due to user request
TransactionTimeout for MySQL error code 1205 Raise TransactionTimeout when lock wait timeout exceeded for PG ada… Rename TransactionTimeout to more descriptive LockWaitTimeout
NEXT AND PREVIOUS DAY OF WEEK API TO ACTIVESUPPORT ACTIVESUPPORT 次、又は、前の曜日を取得するための Date#prev_occurring、Date#next_occurringメソッド が追加された Date.today # => Wed, 31 May 2017 Date.today.next_occurring(:monday) # => Mon, 05 Jun 2017 00:00:00 UTC +00:00 Date.today.prev_occurring(:monday) # => Mon, 29 May 2017 00:00:00 UTC +00:00
DIGESTS BY DEFAULT DEFAULT digestsの生成にMD5を使っていたのを、SHA-1を使うよう になった ETag headerとか con g.active_support.use_hash_digest_classに digest classを指定する事で、SHA-1以外を使用する事も 可能 Initial support for running Rails on FIPS-certi ed systems
POOLING ON REDISCACHESTORE REDISCACHESTORE redis cache storeにconnection poolingのサポートを追 加 ool_sizeオプションを指定した場合のみconnection pool が使用されるようになってる connection pool部分の実装は gemを使用している mem cache storeでも同様のサポートが入っている mperham/connection_pool Support for connection pooling on mem cache store
A CONNECTION TO THE DBCONSOLE DBCONSOLE COMMAND COMMAND rails dbconsoleにconnection名を指定出来るようになっ た bin/rails dbconsole -c replica 3-level database con gurationを使っている場合に便利 なのだが、3-level database con guration自体がまだ ふんわりしている
literalが指定 されるようになりました 以下略 Railsのバージョンをあげたらいきなり"can't modify frozen String"が出るようになった場合、Rails側の問題の 可能性もあるので、issueください JRubyとかあやしい Use frozen-string-literal in ActiveSupport Use frozen string literal in actionmailer/