edge
Daugiau informacijos rubyonrails.org: Daugiau apie Ruby on Rails

Ruby on Rails 6.1 Išleidimo pastabos

Svarbiausios naujovės Rails 6.1:

Šiose išleidimo pastabose aptariamos tik pagrindinės naujovės. Norėdami sužinoti apie įvairius klaidų taisymus ir pakeitimus, prašome kreiptis į pakeitimų žurnalus arba peržiūrėti pakeitimų sąrašą pagrindiniame Rails saugykloje GitHub.

1 Atnaujinimas į Rails 6.1

Jei atnaujinote esamą programą, gerai būtų turėti geras testavimo padengimo galimybes prieš pradedant. Taip pat pirmiausia turėtumėte atnaujinti iki Rails 6.0, jei dar to nedarėte, ir įsitikinti, kad jūsų programa veikia kaip tikėtasi, prieš bandant atnaujinti į Rails 6.1. Atnaujinimo metu reikėtų atkreipti dėmesį į keletą dalykų, kuriuos galima rasti Ruby on Rails atnaujinimo gide.

2 Pagrindinės funkcijos

2.1 Duomenų bazės jungčių keitimas pagal duomenų bazę

Rails 6.1 suteikia galimybę keisti jungtis pagal duomenų bazę. 6.0 versijoje, jei perjungėte į reading vaidmenį, visos duomenų bazės jungtys taip pat perjungė į skaitymo vaidmenį. Dabar 6.1 versijoje, jei nustatysite legacy_connection_handling reikšmę į false savo konfigūracijoje, Rails leis jums perjungti jungtis tik vienai duomenų bazei, iškviesdami connected_to atitinkamam abstrakčiajam klasei.

2.2 Horizontalus fragmentavimas

Rails 6.0 suteikė galimybę funkcinės fragmentacijos (kelios fragmentacijos, skirtingos schemos) jūsų duomenų bazėje, tačiau negalėjo palaikyti horizontalaus fragmentavimo (ta pati schema, kelios fragmentacijos). Rails negalėjo palaikyti horizontalaus fragmentavimo, nes Active Record modeliai galėjo turėti tik vieną ryšį per vaidmenį per klasę. Tai dabar ištaisyta ir horizontalus fragmentavimas su Rails yra galimas.

2.3 Griežtas ryšių įkėlimas

Griežtas ryšių įkėlimas leidžia užtikrinti, kad visi jūsų ryšiai būtų įkelti iš anksto ir sustabdyti N+1 problemą prieš ją įvykdant.

2.4 Deleguoti tipai

Deleguoti tipai yra alternatyva vienos lentelės paveldėjimui. Tai padeda atvaizduoti klasės hierarchijas, leidžiant, kad viršklas būtų konkreti klasė, kurią atstovauja jos pačios lentelė. Kiekvienai po-klasei yra skirta savo lentelė papildomiems atributams.

2.5 Asinchroninis asociacijų naikinimas

Asinchroninis asociacijų naikinimas suteikia galimybę programoms naikinti asociacijas fone. Tai padeda išvengti laiko limitų ir kitų našumo problemų jūsų programoje naikinant duomenis.

3 Railties

Išsamius pakeitimus rasite Changelog puslapyje.

3.1 Pašalinimai

  • Pašalinti pasenusi rake notes užduotys.

  • Pašalintas pasenusi connection parametras iš rails dbconsole komandos.

  • Pašalinta pasenusi SOURCE_ANNOTATION_DIRECTORIES aplinkos kintamojo palaikymas rails notes.

  • Pašalintas pasenusi server argumentas iš rails server komandos.

  • Pašalintas pasenusi palaikymas naudoti HOST aplinkos kintamąjį, nurodantį serverio IP.

  • Pašalintos pasenusios rake dev:cache užduotys.

  • Pašalintos pasenusios rake routes užduotys.

  • Pašalintos pasenusios rake initializers užduotys.

3.2 Pasenusių funkcijų pažymėjimai

3.3 Svarbūs pakeitimai

4 Action Cable

Išsamius pakeitimus rasite Changelog puslapyje.

4.1 Pašalinimai

4.2 Pasenusių funkcijų pažymėjimai

4.3 Svarbūs pakeitimai

5 Action Pack

Išsamius pakeitimus rasite Changelog puslapyje.

5.1 Pašalinimai

  • Pašalintas pasenusi ActionDispatch::Http::ParameterFilter.

  • Pašalintas pasenusi force_ssl kontrolerio lygyje.

5.2 Pasenusių funkcijų pažymėjimai

  • Pažymėta kaip pasenusi config.action_dispatch.return_only_media_type_on_content_type.

5.3 Svarbūs pakeitimai

  • Pakeista ActionDispatch::Response#content_type funkcija, kad grąžintų visą Content-Type antraštę.

6 Action View

Išsamius pakeitimus rasite Changelog puslapyje.

6.1 Pašalinimai

  • Pašalintas pasenusi escape_whitelistActionView::Template::Handlers::ERB.

  • Pašalintas pasenusi find_all_anywhereActionView::Resolver.

  • Pašalintas pasenusi formatsActionView::Template::HTML.

  • Pašalintas pasenusi formatsActionView::Template::RawFile.

  • Pašalintas pasenusi formatsActionView::Template::Text.

  • Pašalintas pasenusi find_fileActionView::PathSet.

  • Pašalintas pasenusi rendered_formatActionView::LookupContext.

  • Pašalintas pasenusi find_fileActionView::ViewPaths.

  • Pašalintas pasenusi palaikymas perduoti objektą, kuris nėra ActionView::LookupContext, kaip pirmą argumentą ActionView::Base#initialize funkcijoje.

  • Pašalintas pasenusi format argumentas ActionView::Base#initialize funkcijoje.

  • Pašalintas pasenusi ActionView::Template#refresh funkcija.

  • Pašalintas pasenusi ActionView::Template#original_encoding funkcija.

  • Pašalintas pasenusi ActionView::Template#variants funkcija.

  • Pašalintas pasenusi ActionView::Template#formats funkcija.

  • Pašalintas pasenusi ActionView::Template#virtual_path= funkcija.

  • Pašalintas pasenusi ActionView::Template#updated_at funkcija.

  • Pašalintas pasenusi updated_at argumentas, reikalingas ActionView::Template#initialize funkcijai.

  • Pašalintas pasenusi ActionView::Template.finalize_compiled_template_methods funkcija.

  • Pašalintas pasenusi config.action_view.finalize_compiled_template_methods palaikymas.

  • Pašalintas pasenusi palaikymas iškviesti ActionView::ViewPaths#with_fallback su bloku.

  • Pašalintas pasenusi palaikymas perduoti absoliučius kelius render template:.

  • Pašalintas pasenusi palaikymas perduoti santykinius kelius render file:.

  • Pašalintas palaikymas šablonų tvarkyklėms, kurios nepriima dviejų argumentų.

  • Pašalintas pasenusi šablonų argumentas ActionView::Template::PathResolver funkcijoje.

  • Pašalintas pasenusi palaikymas iškviesti privačias funkcijas iš objekto kai kuriuose vaizdo pagalbininkuose.

6.2 Pasenusių funkcijų pažymėjimai

6.3 Svarbūs pakeitimai

  • Reikalaujama, kad ActionView::Base paveldėjimą atlikusios klasės įgyvendintų #compiled_method_container funkciją.

  • Privalomas locals argumentas ActionView::Template#initialize funkcijoje.

  • javascript_include_tag ir stylesheet_link_tag turtiniai pagalbos elementai generuoja Link antraštę, kuri suteikia moderniems naršyklėms užuominas apie išankstinį turtų įkėlimą. Tai galima išjungti nustatant config.action_view.preload_links_header reikšmę į false.

7 Veiksmų siuntėjas

Išsamioms pakeitimams žiūrėkite Changelog.

7.1 Pašalinimai

  • Pašalintas pasenusi ActionMailer::Base.receive naudojimas, naudojant Action Mailbox.

7.2 Pasenusių funkcijų pažymėjimai

7.3 Svarbūs pakeitimai

8 Aktyvusis įrašas

Išsamioms pakeitimams žiūrėkite Changelog.

8.1 Pašalinimai

  • Pašalintos pasenusios funkcijos iš ActiveRecord::ConnectionAdapters::DatabaseLimits.

    column_name_length table_name_length columns_per_table indexes_per_table columns_per_multicolumn_index sql_query_length joins_per_query

  • Pašalintas pasenusi ActiveRecord::ConnectionAdapters::AbstractAdapter#supports_multi_insert?.

  • Pašalintas pasenusi ActiveRecord::ConnectionAdapters::AbstractAdapter#supports_foreign_keys_in_create?.

  • Pašalintas pasenusi ActiveRecord::ConnectionAdapters::PostgreSQLAdapter#supports_ranges?.

  • Pašalintos pasenusios ActiveRecord::Base#update_attributes ir ActiveRecord::Base#update_attributes!.

  • Pašalintas pasenusi migrations_path argumentas ActiveRecord::ConnectionAdapter::SchemaStatements#assume_migrated_upto_version metode.

  • Pašalintas pasenusi config.active_record.sqlite3.represent_boolean_as_integer.

  • Pašalintos pasenusios funkcijos iš ActiveRecord::DatabaseConfigurations.

    fetch each first values []=

  • Pašalintas pasenusi ActiveRecord::Result#to_hash metodas.

  • Pašalintas pasenusi parametrų perdavimo nepriklausomam SQL naudojimui ActiveRecord::Relation metodų metu palaikymas.

8.2 Pasenusių funkcijų pažymėjimai

  • Pažymėtas pasenusi ActiveRecord::Base.allow_unsafe_raw_sql.

  • Pažymėtas pasenusi database argumentas connected_to metode.

  • Pažymėtas pasenusi connection_handlers, kai legacy_connection_handling nustatytas kaip false.

8.3 Svarbūs pakeitimai

  • MySQL: Unikalumo tikrinimas dabar atsižvelgia į numatytąją duomenų bazės lygiavimą, pagal numatytąjį nustatymą nebenaudojamas jautrusis raidžių palyginimas.

  • relation.create daugiau neleidžia klasės lygio užklausų metodams patekti prie srities inicializavimo bloko ir atgalinio iškvietimo metu.

    Prieš tai:

    User.where(name: "John").create do |john|
      User.find_by(name: "David") # => nil
    end
    

    Po to:

    User.where(name: "John").create do |john|
      User.find_by(name: "David") # => #<User name: "David", ...>
    end
    
  • Vardinių sričių grandinė daugiau neleidžia klasės lygio užklausų metodams patekti prie srities.

    class User < ActiveRecord::Base
      scope :david, -> { User.where(name: "David") }
    end
    

    Prieš tai:

    User.where(name: "John").david
    # SELECT * FROM users WHERE name = 'John' AND name = 'David'
    

    Po to:

    User.where(name: "John").david
    # SELECT * FROM users WHERE name = 'David'
    
  • where.not dabar generuoja NAND predikatus, o ne NOR.

    Prieš tai:

    User.where.not(name: "Jon", role: "admin")
    # SELECT * FROM users WHERE name != 'Jon' AND role != 'admin'
    

    Po to:

    User.where.not(name: "Jon", role: "admin")
    # SELECT * FROM users WHERE NOT (name = 'Jon' AND role = 'admin')
    
  • Norint naudoti naująją duomenų bazės ryšio tvarkymą, programos turi pakeisti legacy_connection_handling į false ir pašalinti pasenusius prieigos metodus connection_handlers. Vieši metodai connects_to ir connected_to nereikalauja jokių pakeitimų.

    Aktyvus saugojimas

Išsamius pakeitimus žiūrėkite Changelog.

8.4 Pašalinimai

  • Pašalintas pasenusi palaikymas perduoti :combine_options operacijas į ActiveStorage::Transformers::ImageProcessing.

  • Pašalintas pasenusi ActiveStorage::Transformers::MiniMagickTransformer.

  • Pašalintas pasenusi config.active_storage.queue.

  • Pašalintas pasenusi ActiveStorage::Downloading.

8.5 Pasenusi funkcionalumas

  • Pasenusa Blob.create_after_upload funkcija pakeista į Blob.create_and_upload. (Pull Request)

8.6 Svarbūs pakeitimai

  • Pridėta Blob.create_and_upload funkcija, skirta sukurti naują blob ir įkelti duotą io į paslaugą. (Pull Request)
  • Pridėta ActiveStorage::Blob#service_name stulpelis. Po atnaujinimo reikalinga paleisti migraciją. Paleiskite bin/rails app:update, kad būtų sugeneruota migracija.

9 Aktyvus modelis

Išsamius pakeitimus žiūrėkite Changelog.

9.1 Pašalinimai

9.2 Pasenusi funkcionalumas

9.3 Svarbūs pakeitimai

  • Aktyvaus modelio klaidos dabar yra objektai, turintys sąsają, leidžiančią jūsų programai lengviau tvarkyti ir sąveikauti su modelių metu iškeltomis klaidomis. Ši funkcija apima užklausos sąsają, leidžia tiksliau testuoti ir gauti klaidos informaciją.

10 Aktyvus palaikymas

Išsamius pakeitimus žiūrėkite Changelog.

10.1 Pašalinimai

  • Pašalintas pasenusi atsarginis I18n.default_locale naudojimas, kai config.i18n.fallbacks yra tuščias.

  • Pašalinta pasenusi LoggerSilence konstanta.

  • Pašalinta pasenusi ActiveSupport::LoggerThreadSafeLevel#after_initialize funkcija.

  • Pašalintos pasenusios Module#parent_name, Module#parent ir Module#parents funkcijos.

  • Pašalintas pasenusi failas active_support/core_ext/module/reachable.

  • Pašalintas pasenusi failas active_support/core_ext/numeric/inquiry.

  • Pašalintas pasenusi failas active_support/core_ext/array/prepend_and_append.

  • Pašalintas pasenusi failas active_support/core_ext/hash/compact.

  • Pašalintas pasenusi failas active_support/core_ext/hash/transform_values.

  • Pašalintas pasenusi failas active_support/core_ext/range/include_range.

  • Pašalintos pasenusios ActiveSupport::Multibyte::Chars#consumes? ir ActiveSupport::Multibyte::Chars#normalize funkcijos.

  • Pašalintos pasenusios ActiveSupport::Multibyte::Unicode.pack_graphemes, ActiveSupport::Multibyte::Unicode.unpack_graphemes, ActiveSupport::Multibyte::Unicode.normalize, ActiveSupport::Multibyte::Unicode.downcase, ActiveSupport::Multibyte::Unicode.upcase ir ActiveSupport::Multibyte::Unicode.swapcase funkcijos.

  • Pašalinta pasenusi ActiveSupport::Notifications::Instrumenter#end= funkcija.

10.2 Pasenusi funkcionalumas

  • Pasenusa ActiveSupport::Multibyte::Unicode.default_normalization_form funkcija.

10.3 Svarbūs pakeitimai

11 Aktyvus darbas

Išsamius pakeitimus žiūrėkite Changelog.

11.1 Pašalinimai

11.2 Pasenusi funkcionalumas

  • Pasenusa config.active_job.return_false_on_aborted_enqueue funkcija.

11.3 Svarbūs pakeitimai

  • Grąžinti false, kai darbo įtraukimas į eilę yra nutrauktas.

12 Veiksmo tekstas

Išsamius pakeitimus žiūrėkite Changelog.

12.1 Pašalinimai

12.2 Pasenusi funkcionalumas

12.3 Svarbūs pakeitimai

  • Pridėta funkcija, patvirtinanti turtingojo teksto turinio buvimą, pridedant ? po turtingojo teksto atributo pavadinimo. (Pull Request)

  • Pridėtas fill_in_rich_text_area sistemos testo pagalbininkas, skirtas rasti trix redaktorių ir užpildyti jį duotu HTML turiniu. (Pull Request)

  • Pridėta ActionText::FixtureSet.attachment funkcija, skirta generuoti <action-text-attachment> elementus duomenų bazės fiksuose. (Pull Request)

13 Veiksmo pašto dėžutė

Išsamius pakeitimus žiūrėkite Changelog.

13.1 Pašalinimai

13.2 Nustatymų pasenusių funkcijų

  • Nustatyti Rails.application.credentials.action_mailbox.api_key ir MAILGUN_INGRESS_API_KEY kaip pasenusius, naudoti Rails.application.credentials.action_mailbox.signing_key ir MAILGUN_INGRESS_SIGNING_KEY vietoje.

13.3 Svarbūs pakeitimai

14 Ruby on Rails vadovai

Išsamesnius pakeitimus žiūrėkite Keitimų žurnale.

14.1 Svarbūs pakeitimai

15 Autoriai

Žiūrėkite pilną sąrašą prisidėjusių prie Rails žmonių, kurie daug valandų skyrė kurti Rails, stabilų ir patikimą karkasą. Jie visi nusipelno pagyrimo.

Atsiliepimai

Jūs esate skatinami padėti pagerinti šio vadovo kokybę.

Prašome prisidėti, jei pastebite rašybos klaidų ar faktinių klaidų. Norėdami pradėti, galite perskaityti mūsų dokumentacijos prisidėjimo skyrių.

Taip pat gali būti nepilnos informacijos arba informacijos, kuri nėra atnaujinta. Prašome pridėti bet kokią trūkstamą dokumentaciją pagrindiniam. Patikrinkite Edge vadovus pirmiausia, ar problemas jau išspręsta arba ne pagrindinėje šakoje. Patikrinkite Ruby on Rails vadovų gaires dėl stiliaus ir konvencijų.

Jei dėl kokios nors priežasties pastebite kažką, ką reikia ištaisyti, bet negalite patys tai pataisyti, prašome pranešti apie problemą.

Ir galiausiai, bet ne mažiau svarbu, bet koks diskusijos dėl Ruby on Rails dokumentacijos yra labai laukiamos oficialiame Ruby on Rails forume.