CONVERT THE ACTION CABLE JAVASCRIPT CONVERT THE ACTION CABLE JAVASCRIPT PACKAGE FROM COFFEESCRIPT TO ES2015 AND PACKAGE FROM COFFEESCRIPT TO ES2015 AND PUBLISH THE SOURCE CODE IN THE NPM PUBLISH THE SOURCE CODE IN THE NPM DISTRIBUTION DISTRIBUTION https://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#actio cable-javascript-api-changes
BE CALLED WITH A BLOCK TO DEFINE SPECIFIC BE CALLED WITH A BLOCK TO DEFINE SPECIFIC BROWSER CAPABILITIES BROWSER CAPABILITIES driven_by :selenium, using: :headless_chrome, screen_size: [14 do |driver_option| # driver_option.class => Selenium::WebDriver::Chrome::Opti driver_option.add_emulation(device_name: 'iPhone 6') end
EXPIRY METADATA INSIDE ADD PURPOSE AND EXPIRY METADATA INSIDE SIGNED/ENCRYPTED COOKIES TO PREVENT SIGNED/ENCRYPTED COOKIES TO PREVENT COPYING THE VALUE OF COOKIES INTO ONE COPYING THE VALUE OF COOKIES INTO ONE ANOTHER ANOTHER
METADATA INSIDE ADD PURPOSE AND EXPIRY METADATA INSIDE SIGNED/ENCRYPTED COOKIES TO PREVENT SIGNED/ENCRYPTED COOKIES TO PREVENT COPYING THE VALUE OF COOKIES INTO ONE COPYING THE VALUE OF COOKIES INTO ONE ANOTHER ANOTHER https://gist.github.com/assain/fed04b9b610b8c190566a1956f523cc1
CONFIGURATION OPTION TO HANDLE CONFIGURATION OPTION TO HANDLE ENFORCING UTF-8 ENCODING. THIS DEFAULTS ENFORCING UTF-8 ENCODING. THIS DEFAULTS TO TO false false
DEVELOPMENT CLEAR ACTION VIEW CACHE IN DEVELOPMENT ONLY ON FILE CHANGES, SPEEDING UP ONLY ON FILE CHANGES, SPEEDING UP DEVELOPMENT MODE DEVELOPMENT MODE
in development Add a nalizer to inline templates No nil format on templates Templates have one format Pass locals in to the template object on construction Pass the template format to the digestor Move compiled ERB to an AV::Base subclass Speed up partial rendering by caching "variable" calculation More Read-Only Changes Tighten up the AV::Base constructor Make the lookup context more "read-only" Template Handler Refactoring
作成する必要があります ActiveJob::Serializers::ObjectSerializerがserialize / deserialize処理の為 の基本クラスなので、それを継承したゴニョゴニョする ADD SUPPORT FOR CUSTOM SERIALIZERS FOR ADD SUPPORT FOR CUSTOM SERIALIZERS FOR ACTIVE JOB ARGUMENTS ACTIVE JOB ARGUMENTS
CUSTOM SERIALIZERS FOR ACTIVE JOB ARGUMENTS ACTIVE JOB ARGUMENTS class MoneySerializer < ActiveJob::Serializers::ObjectSerializ def serialize(money) super("amount" => money.amount, "currency" => money.curren end def deserialize(hash) Money.new(hash["amount"], hash["currency"]) end private def klass Money end end Rails.application.config.active_job.custom_serializers << Mone https://github.com/rails/rails/tree/master/activejob/lib/active_job/serializers
ADD A CONFIGURATION OPTION TO ADD A CONFIGURATION OPTION TO CUSTOMIZE FORMAT OF THE CUSTOMIZE FORMAT OF THE ActiveModel::Errors#full_message ActiveModel::Errors#full_message activemodel.errors.models.person/contacts/addresses.attributes activemodel.errors.models.person/contacts/addresses.format activemodel.errors.models.person.attributes.name.format activemodel.errors.models.person.format
SCOPES ADD THE ABILITY TO DISABLE SCOPES GENERATED BY GENERATED BY ActiveRecord.enum ActiveRecord.enum enum status: [:proposed, :written], _scopes: false
ADD THE ABILITY TO FILTER OUT SENSITIVE ADD THE ABILITY TO FILTER OUT SENSITIVE DATA IN DATA IN #inspect #inspect User.first.inspect #=> "#<User id: 1, name: \"Taro\", secret: \"secret\", created ActiveRecord::Base.filter_attributes = [:secret] User.first.inspect #=> "#<User id: 1, name: \"Taro\", secret: [FILTERED], created
IN #where #where FOR ENDLESS RANGES FOR ENDLESS RANGES INTRODUCED IN RUBY 2.6 INTRODUCED IN RUBY 2.6 User.where(id: 1..).to_sql #=> "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"id\" PostgreSQL: Support endless range values for range types
SHORT-HAND FOR AS SHORT-HAND FOR SINGLE-VALUE PLUCKS SINGLE-VALUE PLUCKS Person.where(id: 1).pick(:name) # SELECT people.name FROM people WHERE id = 1 LIMIT 1 # => 'David' Person.where(id: 1).pick(:name, :email_address) # SELECT people.name, people.email_address FROM people WHERE i # => [ 'David', '[email protected]' ]
#destroy_by AND AND #delete_by #delete_by FOR FOR CONDITIONAL REMOVALS CONDITIONAL REMOVALS Person.destroy_by(id: 13) Person.delete_by("published_at < ?", 2.weeks.ago)
IS A SHORT- METHOD, WHICH IS A SHORT- HAND FOR HAND FOR unscope(:select).select(fields) unscope(:select).select(fields) Post.select(:title, :body).reselect(:created_at) # => SELECT `posts.created_at` FROM `posts`
rstを使用しても最初の値は取得出来ない) 為、そのような場合に任意のカラムでorder出来るようにする為 MAKE IT POSSIBLE TO OVERRIDE THE IMPLICIT MAKE IT POSSIBLE TO OVERRIDE THE IMPLICIT ORDER COLUMN ORDER COLUMN class User < ActiveRecord::Base self.implicit_order_column = "created_at" end User.first # =>User Load (0.2ms) SELECT "users".* FROM "users" ORDER BY
BY USE THE UTF8MB4 CHARACTER SET BY DEFAULT IN MYSQL DEFAULT IN MYSQL https://speakerdeck.com/yahonda/rails-6-mysqlfalseutf8mb4dui- ying-tohahe-deatutehe-dehanaifalseka
minimum SQLite version to 3.8. Bump the minimum version of the sqlite3 gem to 1.4. Bump the minimum MySQL version to 5.5.8. Bump the minimum PostgreSQL version to 9.3
TRUNCATES THAT TRUNCATES TABLES OF EACH DATABASEFOR THE CURRENT TABLES OF EACH DATABASEFOR THE CURRENT ENVIRONMENT AND LOADS THE SEEDS ENVIRONMENT AND LOADS THE SEEDS
deprecateになりました DEPRECATE DEPRECATE update_attributes update_attributes AND AND update_attributes! update_attributes! Rename update_attributes method to update
collation comparison for uniquness validator Deprecate where.not working as NOR and will be changed to NAND in Rails 6.1 Deprecate using class level querying methods if the receiver scope regarded as leaked https://blog.kamipo.net/entry/2019/05/15/152652
g.active_storage.variant_processorにvipsを 指定すればOK これによりmini_magick gemを直接使用するのはdepecateにな った 因みに、変換処理でImageMagickのオペレーションを直接指定していたのを、 image_processingが提供するメソッド(resize_to_ t、resize_to_ ll等々)を 使用するよう変更する必要があります USE THE USE THE image_processing image_processing GEM FOR ACTIVE GEM FOR ACTIVE STORAGE VARIANTS. THIS REPLACES USING STORAGE VARIANTS. THIS REPLACES USING mini_magick mini_magick DIRECTLY DIRECTLY image_processing libvips
バリデーション機能は結局まだ入らなかった REPLACE EXISTING IMAGES INSTEAD OF REPLACE EXISTING IMAGES INSTEAD OF ADDING TO THEM WHEN UPDATING AN ADDING TO THEM WHEN UPDATING AN ATTACHED MODEL VIA ATTACHED MODEL VIA update update OR OR update! update! WITH, WITH, SAY, `@USER.UPDATE!(IMAGES: [ … ] SAY, `@USER.UPDATE!(IMAGES: [ … ] @user.avatar = params[:avatar]
EXISTING IMAGES INSTEAD OF ADDING TO THEM WHEN UPDATING AN ADDING TO THEM WHEN UPDATING AN ATTACHED MODEL VIA ATTACHED MODEL VIA update update OR OR update! update! WITH, WITH, SAY, `@USER.UPDATE!(IMAGES: [ … ] SAY, `@USER.UPDATE!(IMAGES: [ … ] Active Storage has_many_attached attachments get destroyed when subsequent les are attached
g.active_storage.queue)は deprecateになりました DEPRECATE DEPRECATE config.active_storage.queue config.active_storage.queue IN IN FAVOR OF FAVOR OF config.active_storage.queues.analysis config.active_storage.queues.analysis AND AND config.active_storage.queues.purge config.active_storage.queues.purge
この対応で時間を取得するのにCLOCK_MONOTONICを使用す るようになったが、これは非互換という事で後ほどrevertされた 最終的に、ActiveSupport::Noti cations.monotonic_subscribeという別のメ ソッドにする事で対応 ADD CPU TIME, IDLE TIME, AND ALLOCATIONS ADD CPU TIME, IDLE TIME, AND ALLOCATIONS FEATURES TO LOG SUBSCRIBER EVENTS FEATURES TO LOG SUBSCRIBER EVENTS Introduce ActiveSupport::Noti cations.monotonic_subscribe
を行う必要があった ADD SUPPORT FOR EVENT OBJECT TO THE ADD SUPPORT FOR EVENT OBJECT TO THE ACTIVE SUPPORT NOTIFICATION SYSTEM ACTIVE SUPPORT NOTIFICATION SYSTEM
EVENT OBJECT TO THE ACTIVE SUPPORT NOTIFICATION SYSTEM ACTIVE SUPPORT NOTIFICATION SYSTEM # before ActiveSupport::Notifications.subscribe('wait') do |*args| @event = ActiveSupport::Notifications::Event.new(*args) end ActiveSupport::Notifications.instrument('wait') { sleep 1 } @event.duration # => 1000.138 # after ActiveSupport::Notifications.subscribe('wait') { |event| @even ActiveSupport::Notifications.instrument('wait') { sleep 1 } @event.duration # => 1000.138
after? METHODS TO METHODS TO Date Date, , DateTime DateTime, , Time Time, AND , AND TimeWithZone TimeWithZone Date.new(2017, 3, 6).before?(Date.new(2017, 3, 5) Date.new(2017, 3, 6).after?(Date.new(2017, 3, 5)
CREDENTIALS CREDENTIALS $ EDITOR=vim ./bin/rails credentials:edit -e production Adding config/credentials/production.key to store the encrypti Save this in a password manager your team can access. If you lose the key, no one, including you, can access anythin create config/credentials/production.key Ignoring config/credentials/production.key so it won't end up append .gitignore File encrypted and saved. ./bin/rails credentials:show -e production # aws: # access_key_id: 123 # secret_access_key: 345
g/credentials.yml.enc)の順で検索 されるようになっており、先に見つかったファイルが使用される 内容のmergeは行われないので、env毎のcredentialファイルが使用される場 合con g/credentials.yml.encはロードされない ADD SUPPORT FOR MULTI ENVIRONMENT ADD SUPPORT FOR MULTI ENVIRONMENT CREDENTIALS CREDENTIALS
OF ADD ABILITY TO SEE THE OUTPUT OF rails rails routes routes IN EXPANDED FORMAT IN EXPANDED FORMAT ./bin/rails routes --expanded --[ Route 1 ]------------------------------------------------- Prefix | users Verb | GET URI | /users(.:format) Controller#Action | users#index --[ Route 2 ]------------------------------------------------- Prefix | Verb | POST URI | /users(.:format) Controller#Action | users#create
同様に、Action Text用のrich_text eldが追加されている ADD ATTACHMENT AND ATTACHMENTS FIELD ADD ATTACHMENT AND ATTACHMENTS FIELD GENERATORS GENERATORS Add rich_text eld to model generators