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

Ruby on Rails 5.2 Išleidimo pastabos

Svarbiausi dalykai Rails 5.2:

Šiose išleidimo pastabose aptariami tik pagrindiniai pokyčiai. Norėdami sužinoti apie įvairius klaidų taisymus ir pokyčius, prašome kreiptis į pakeitimų žurnalus arba peržiūrėti pakeitimų sąrašą pagrindiniame Rails saugykloje GitHub.

1 Atnaujinimas iki Rails 5.2

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

2 Pagrindinės funkcijos

2.1 Active Storage

Pakeitimų užklausa

Active Storage palengvina failų įkėlimą į debesų saugyklos paslaugą, tokias kaip Amazon S3, Google Cloud Storage arba Microsoft Azure Storage, ir prideda tuos failus prie Active Record objektų. Tai apima vietinės disko pagrindu veikiančią paslaugą vystymui ir testavimui ir palaiko failų kopijavimą į pagalbines paslaugas atsarginėms kopijoms ir migracijoms. Apie Active Storage daugiau galite sužinoti Active Storage apžvalgoje vadove.

2.2 Redis Cache Store

Pakeitimų užklausa

Rails 5.2 turi įmontuotą Redis kešo saugyklą. Apie tai daugiau galite sužinoti Rails kešavimas: Apžvalga vadove.

2.3 HTTP/2 Early Hints

Pakeitimų užklausa

Rails 5.2 palaiko HTTP/2 Early Hints. Norėdami įjungti Early Hints serverį, paleiskite --early-hints komandą bin/rails server.

2.4 Credentials

Pakeitimų užklausa

Pridėtas config/credentials.yml.enc failas, skirtas saugoti produkcijos programos paslaptis. Tai leidžia išsaugoti bet kokias autentifikacijos prieigos duomenis trečiųjų šalių paslaugoms tiesiogiai saugykloje, užšifruotus naudojant config/master.key failo arba RAILS_MASTER_KEY aplinkos kintamojo raktą. Tai galiausiai pakeis Rails.application.secrets ir užšifruotas paslaptis, pristatytas Rails 5.1. Be to, Rails 5.2 atveria API pagrindinėms Credentials, taigi galite lengvai tvarkyti kitas užšifruotas konfigūracijas, raktus ir failus. Apie tai daugiau galite sužinoti Saugant Rails programas vadove.

2.5 Content Security Policy

Pakeitimų užklausa

Rails 5.2 turi naują DSL, kuris leidžia konfigūruoti Turinio saugumo politiką jūsų programai. Galite konfigūruoti globalią numatytąją politiką ir tada perrašyti ją pagal išteklių bazę ir net naudoti lambda funkcijas, kad įterptumėte per užklausą reikšmes į antraštės dalį, pvz., sąskaitos subdomenus daugiamandatėje programoje. Apie tai daugiau galite sužinoti Saugant Rails programas vadove.

3 Railties

Išsamius pakeitimus rasite [Changelog][railties] puslapyje.

3.1 Pasenusios funkcijos

  • Pasenusi capify! metodo naudojimas generatoriuose ir šablonuose. (Pull Request)

  • Pasenusi aplinkos pavadinimo perduodimas kaip įprastas argumentas rails dbconsole ir rails console komandoms. Vietoj to turėtų būti naudojama -e parinktis. (Commit)

  • Pasenusi Rails::Application paveldėjimo naudojimas paleidžiant Rails serverį. (Pull Request)

  • Pasenusi after_bundle atgalinis iškvietimas Rails plugin šablonuose. (Pull Request)

3.2 Svarbūs pakeitimai

  • Pridėtas bendras skyrius config/database.yml, kuris bus įkeltas visoms aplinkoms. (Pull Request)

  • Pridėtas railtie.rb į plugin generatorių. (Pull Request)

  • Išvalomi ekrano kopijų failai tmp:clear užduotyje. (Pull Request)

  • Praleidžiami nenaudojami komponentai paleidžiant bin/rails app:update. Jei pradinės programos generavimo metu buvo praleisti Action Cable, Active Record ir kt., atnaujinimo užduotis taip pat laikosi tų praleidimų. (Pull Request)

  • Leidžiama perduoti pasirinktinį prisijungimo pavadinimą rails dbconsole komandai naudojant 3 lygių duomenų bazės konfigūraciją. Pavyzdys: bin/rails dbconsole -c replica. (Commit)

  • Teisingai išplečiami aplinkos pavadinimo trumpiniai vykdant console ir dbconsole komandas. (Commit)

  • Pridedamas bootsnap į numatytąjį Gemfile. (Pull Request)

  • Palaikoma - kaip platformos nepriklausomas būdas vykdyti scenarijų iš standartinio įvesties srauto naudojant rails runner (Pull Request)

  • Pridedama ruby x.x.x versija į Gemfile ir sukuriamas .ruby-version pagrindinis failas, kuriame yra dabartinė Ruby versija, kai kuriamos naujos Rails programos. (Pull Request)

  • Pridedama --skip-action-cable parinktis plugin generatoriui. (Pull Request)

  • Pridedama git_source į Gemfile plugin generatoriui. (Pull Request)

  • Praleidžiami nenaudojami komponentai paleidžiant bin/rails Rails pluginui. (Commit)

  • Optimizuojama generatoriaus veiksmų įdėjimo įterpimo. (Pull Request)

  • Optimizuojama maršrutų įdėjimo įterpimo. (Pull Request)

  • Pridedama --skip-yarn parinktis plugin generatoriui. (Pull Request)

  • Palaikomi keli versijų argumentai gem metodo Generators. (Pull Request)

  • Išvestas secret_key_base iš programos pavadinimo vystymo ir testavimo aplinkose. (Pull Request)

  • Pridedamas mini_magick į numatytąjį Gemfile kaip komentaras. (Pull Request)

  • rails new ir rails plugin new pagal numatytuosius nustatymus gauna Active Storage. Pridėta galimybė praleisti Active Storage naudojant --skip-active-storage ir tai automatiškai daroma, kai naudojamas --skip-active-record. (Pull Request)

4 Action Cable

Išsamius pakeitimus rasite [Changelog][action-cable] puslapyje.

4.1 Pašalinimai

  • Pašalintas pasenusių įvykių redis adapteris. (Commit)

4.2 Pastebimi pakeitimai

  • Pridėta palaikymo host, port, db ir password parinktys cable.yml (Pull Request)

  • Maišyti ilgi srauto identifikatoriai naudojant PostgreSQL adapterį. (Pull Request)

5 Veiksmų paketas

Išsamesnių pakeitimų žr. [Changelog][action-pack].

5.1 Pašalinimai

  • Pašalintas pasenusių ActionController::ParamsParser::ParseError. (Commit)

5.2 Pasenusių funkcijų pažymėjimai

  • Pažymėti #success?, #missing? ir #error? sinonimai ActionDispatch::TestResponse. (Pull Request)

5.3 Pastebimi pakeitimai

  • Pridėtas palaikymas perdirbamiems talpyklos raktams su fragmentų talpinimu. (Pull Request)

  • Pakeistas fragmentų talpyklos raktų formatas, kad būtų lengviau atsekti raktų keitimąsi. (Pull Request)

  • AEAD užšifruoti slapukai ir seansai su GCM. (Pull Request)

  • Numatytuoju būdu apsaugoti nuo padirbimo. (Pull Request)

  • Priversti pasirašytus/užšifruotus slapukus pasibaigti serveryje. (Pull Request)

  • Slapukų :expires parinktis palaiko ActiveSupport::Duration objektą. (Pull Request)

  • Naudoti Capybara registruotą :puma serverio konfigūraciją. (Pull Request)

  • Supaprastinti slapukų middleware su raktų keitimo palaikymu. (Pull Request)

  • Pridėti galimybę įjungti ankstyvus užuominas HTTP/2. (Pull Request)

  • Pridėti galimybę naudoti headless chrome sisteminiuose testuose. (Pull Request)

  • Pridėta :allow_other_host parinktis redirect_back metode. (Pull Request)

  • Padaryti, kad assert_recognizes apdorotų prijungtas variklius. (Pull Request)

  • Pridėta DSL konfigūruoti Content-Security-Policy antraštę. (Pull Request, Commit, Commit)

  • Registruoti dažniausiai naudojamus garso/vaizdo/šriftų MIME tipus, palaikomus moderniuose naršyklėse. (Pull Request)

  • Pakeistas numatytasis sistemos testų ekrano išvesties formatas iš inline į simple. (Commit)

  • Pridėta galimybė naudoti headless firefox sisteminiuose testuose. (Pull Request)

  • Pridėti saugūs X-Download-Options ir X-Permitted-Cross-Domain-Policies į numatytas antraštes. (Commit)

  • Pakeisti sistemos testai, kad Puma būtų numatytasis serveris tik tada, kai vartotojas nenurodė kitokio serverio rankiniu būdu. (Pull Request)

  • Pridėta Referrer-Policy antraštė į numatytas antraštes. (Commit)

  • Sutampa su Hash#each elgesiu ActionController::Parameters#each. (Pull Request)

  • Pridėta palaikymas automatiniam nonce generavimui Rails UJS. (Commit)

  • Atnaujinta numatytoji HSTS max-age reikšmė iki 31536000 sekundžių (1 metai), kad atitiktų https://hstspreload.org/ minimalų max-age reikalavimą. (Commit)

  • Pridėtas sinoniminis metodas to_hash to_h cookies. Pridėtas sinoniminis metodas to_h to_hash session. (Commit)

6 Veiksmų peržiūra

Išsamesnių pakeitimų žr. [Changelog][action-view].

6.1 Pašalinimai

  • Pašalintas pasenusi Erubis ERB tvarkytuvas. (Commit)

6.2 Pasenusi funkcionalumas

  • Pasenusas image_alt pagalbininkas, kuris buvo naudojamas pridėti numatytąjį alt tekstą paveikslėliams, kurie buvo sugeneruoti naudojant image_tag. (Pull Request)

6.3 Svarbūs pakeitimai

  • Pridėtas :json tipas auto_discovery_link_tag, kad būtų palaikomi JSON srautai. (Pull Request)

  • Pridėta srcset parinktis image_tag pagalbininkui. (Pull Request)

  • Ištaisytos problemos su field_error_proc, apgaubiančiu optgroup ir pasirinkimo dalininku option. (Pull Request)

  • Pakeistas form_with generuoti id pagal numatytuosius nustatymus. (Commit)

  • Pridėtas preload_link_tag pagalbininkas. (Pull Request)

  • Leidžiama naudoti iškviečiamuosius objektus kaip grupės metodus grupuotuose pasirinkimuose. (Pull Request)

7 Veiksmų siuntėjas

Išsamesnių pakeitimų žr. [Changelog][action-mailer].

7.1 Svarbūs pakeitimai

  • Leidžiama veiksmų siuntėjo klasėms konfigūruoti pristatymo darbą. (Pull Request)

  • Pridėtas assert_enqueued_email_with testavimo pagalbininkas. (Pull Request)

8 Aktyvusis įrašas

Išsamesnių pakeitimų žr. [Changelog][active-record].

8.1 Pašalinimai

  • Pašalintas pasenusi #migration_keys. (Pull Request)

  • Pašalintas pasenusi palaikymas quoted_id, kai konvertuojamas Aktyvaus įrašo objektas. (Commit)

  • Pašalinta pasenusi argumento default parametrizacija index_name_exists?. (Commit)

  • Pašalintas pasenusi palaikymas perduoti klasę :class_name asociacijose. (Commit)

  • Pašalinti pasenusi metodai initialize_schema_migrations_table ir initialize_internal_metadata_table. (Commit)

  • Pašalintas pasenusi metodas supports_migrations?. (Commit)

  • Pašalintas pasenusi metodas supports_primary_key?. (Commit)

  • Pašalintas pasenusi metodas ActiveRecord::Migrator.schema_migrations_table_name. (Commit)

  • Pašalintas pasenusi argumentas name#indexes. (Commit)

  • Pašalinti pasenusi argumentai iš #verify!. (Commit)

  • Pašalinta pasenusi konfigūracija .error_on_ignored_order_or_limit. (Commit)

  • Pašalintas pasenusi metodas #scope_chain. (Commit)

  • Pašalintas pasenusi metodas #sanitize_conditions. (Commit)

8.2 Pasenusi funkcionalumas

  • Pasenusas supports_statement_cache?. (Pull Request)

  • Pasenusas argumentų ir bloko perdavimas tuo pačiu metu count ir sum funkcijoms ActiveRecord::Calculations. (Pull Request)

  • Pasenusas delegavimas į arel Relation. (Pull Request)

  • Pasenusas set_state metodas TransactionState. (Commit)

  • Pasenusas expand_hash_conditions_for_aggregates be pakeitimo. (Commit)

8.3 Svarbūs pakeitimai

  • Kvietus dinaminį fiktyviųjų duomenų gavimo metodą be argumentų, dabar jis grąžina visus šio tipo fiktyvius duomenis. Anksčiau šis metodas visada grąžindavo tuščią masyvą. (Pull Request)

  • Ištaisytas nesuderinamumas su pakeistomis atributų reikšmėmis, kai perrašomas Aktyvaus įrašo atributo skaitytuvas. (Pull Request)

  • Palaikoma mažėjanti tvarka MySQL indeksams. (Pull Request)

  • Ištaisytas bin/rails db:forward pirmos migracijos veikimas. (Commit)

  • Sukeliamas klaidos pranešimas UnknownMigrationVersionError perkeldžiant migracijas, kai dabartinė migracija neegzistuoja. (Commit)

  • Pagerbti SchemaDumper.ignore_tables rake užduotyse duomenų bazės struktūros iškrovimui. (Pull Request)

  • Pridėti ActiveRecord::Base#cache_version palaikymą, kad būtų galima naudoti perdirbtinas talpyklos raktus naudojant naujus versijuotus įrašus ActiveSupport::Cache. Tai taip pat reiškia, kad ActiveRecord::Base#cache_key dabar grąžins stabilų raktą, kuriame nebebus laiko žymės. (Pull Request)

  • Neleisti sukurti parametrų, jei konvertuota reikšmė yra nil. (Pull Request)

  • Naudojamas masinis įterpimas, kad būtų pagerinta veiksmingumas įterpiant fiktyvius duomenis. (Pull Request)

  • Sujungiant dvi sąryšius, kurie atstovauja įterptiems sąryšiams, nebesikeičia sujungimai sujungto sąryšio į kairįjį išorinį sujungimą. (Pull Request)

  • Taisomas transakcijų taikymas vaikinėms transakcijoms. Anksčiau, jei turėjote įterptą transakciją ir išorinė transakcija buvo atšaukta, įrašas iš vidinės transakcijos vis tiek buvo žymimas kaip išsaugotas. Tai buvo ištaisyta taikant tėvų transakcijos būseną vaikinėms transakcijoms, kai tėvų transakcija yra atšaukiama. Tai teisingai pažymi įrašus iš vidinės transakcijos kaip ne išsaugotas. (Commit)

  • Taisomas ankstyvasis įkelimas / užkrovimas asociacijos su sąlyga, įskaitant sujungimus. (Pull Request)

  • Neleisti sql.active_record pranešimų prenumeratorių klaidų konvertuoti į ActiveRecord::StatementInvalid išimtis. (Pull Request)

  • Praleisti užklausos talpinimą dirbant su įrašų grupėmis (find_each, find_in_batches, in_batches). (Commit)

  • Pakeisti sqlite3 boolean serijavimą naudojant 1 ir 0. SQLite natūraliai atpažįsta 1 ir 0 kaip tiesą ir netiesą, bet anksčiau serijavo 't' ir 'f'. (Pull Request)

  • Reikšmės, sukonstruotos naudojant daugiausiai parametrų priskyrimą, dabar naudos po tipo konvertavimo reikšmę, kad būtų rodomos vieno lauko formos įvestyse. (Commit)

  • ApplicationRecord daugiau nebus generuojamas generuojant modelius. Jei jums reikia jį sukurti, galite tai padaryti naudodami rails g application_record. (Pull Request)

  • Relation#or dabar priima du sąryšius, kurių references reikšmės skiriasi tik, nes references gali būti neaiškiai iškviesta naudojant where. (Commit)

  • Naudojant Relation#or, išskirkite bendras sąlygas ir padėkite jas prieš OR sąlygą. (Pull Request)

  • Pridėti binary fiktyvaus pagalbinio metodo. (Pull Request)

  • Automatiškai atspėkite atvirkštinį ryšį STI. (Pull Request)

  • Pridėti naują klaidos klasę LockWaitTimeout, kuri bus iškelta, kai viršytas laiko limitas laukiant užrakto. (Pull Request)

  • Atnaujinti sql.active_record instrumentavimo duomenų pavadinimus, kad jie būtų aiškesni. (Pull Request)

  • Naudojamas nurodytas algoritmas, pašalinant indeksą iš duomenų bazės. (Pull Request)

  • Perduodant Set objektą Relation#where metodui, elgesys dabar yra toks pat kaip ir perduodant masyvą. (Commit)

  • PostgreSQL tsrange dabar išlaiko poantrojo tikslumo duomenis. (Pull Request)

  • Sukeliamas klaidos pranešimas, kai lock! metodas yra iškviestas ant modifikuoto įrašo. (Commit)

  • Ištaisyta klaida, kai indekso stulpelių tvarka nebuvo įrašoma į db/schema.rb failą naudojant SQLite adapterį. (Pull Request)

  • Ištaisytas bin/rails db:migrate su nurodytu VERSION. bin/rails db:migrate su tuščiu VERSION elgiasi kaip ir be VERSION. Tikrinamas VERSION formato tinkamumas: leidžiamas migracijos versijos numeris arba migracijos failo pavadinimas. Klaida išmetama, jei VERSION formatas yra netinkamas. Klaida išmetama, jei tikslinė migracija neegzistuoja. (Pull Request)

  • Pridėta nauja klaidos klasė StatementTimeout, kuri bus iškeliama, kai viršytas užklausos vykdymo laikas. (Pull Request)

  • update_all metodas dabar prieš perduodant reikšmes į Type#serialize metodą, perduoda jas į Type#cast metodą. Tai reiškia, kad update_all(foo: 'true') tinkamai išsaugos boolean reikšmę. (Commit)

  • Reikalinga aiškiai pažymėti, kai naudojami neapdoroti SQL fragmentai užklausos metoduose. (Commit, Commit)

  • Pridėtas #up_only metodas duomenų bazės migracijoms, skirtas kodui, kuris yra aktualus tik migracijos metu, pvz., naujo stulpelio užpildymui. (Pull Request)

  • Pridėta nauja klaidos klasė QueryCanceled, kuri bus iškeliama, kai užklausa yra nutraukiama dėl vartotojo prašymo. (Pull Request)

  • Neleidžiama apibrėžti sąlygų, kurios konfliktuoja su Relation klasės egzemplioriaus metodais. (Pull Request)

  • Pridėta palaikymo PostgreSQL operatorių klasių add_index metode. (Pull Request)

  • Registruojami duomenų bazės užklausų kviečiantys elementai. (Pull Request, Pull Request, Pull Request)

  • Atšaukiami atributo metodai paveldėtuose objektuose, kai atnaujinami stulpelių informacijos duomenys. (Pull Request)

  • Naudojamas subselect metodas delete_all su limit arba offset. (Commit)

  • Ištaisyta nesuderinamumas su first(n) metodu, naudojant limit(). first(n) ieškiklis dabar atsižvelgia į limit(), tai padaro jį suderinamą su relation.to_a.first(n) elgesiu ir taip pat su last(n) elgesiu. (Pull Request)

  • Ištaisyta klaida su įeinamaisiais has_many :through asociacijomis nepersistuotuose tėviniuose objektuose. (Commit)

  • Atsižvelgiama į asociacijos sąlygas, kai trinami per sąlygą susieti įrašai. (Commit)

  • Neleidžiama keisti sunaikinto objekto po save ar save! iškvietimo. (Commit)

  • Ištaisyti ryšio sujungimo problemą naudojant left_outer_joins. (Pull Request)

  • Palaikymas PostgreSQL užsienio lentelėms. (Pull Request)

  • Išvalyti transakcijos būseną, kai Active Record objektas yra kopijuojamas. (Pull Request)

  • Ištaisyti neplėtojimo problemą, kai perduodamas masyvo objektas kaip argumentas where metodui naudojant composed_of stulpelį. (Pull Request)

  • Padaryti, kad reflection.klass mestų išimtį, jei polymorphic? nebūtų naudojamas neteisingai. (Commit)

  • Ištaisyti #columns_for_distinct MySQL ir PostgreSQL, kad ActiveRecord::FinderMethods#limited_ids_for naudotų teisingus pirminio rakto reikšmes, net jei ORDER BY stulpeliai apima kitos lentelės pirminį raktą. (Commit)

  • Ištaisyti dependent: :destroy problemą has_one/belongs_to ryšyje, kai tevo klasė buvo ištrinama, kai vaikas nebuvo. (Commit)

  • Neveikiančios duomenų bazės ryšiai (ankstesni tik palikti ryšiai) dabar periodiškai yra pašalinami jungčių baseino valykle. (Commit)

9 Active Model

Išsamesniam pakeitimų sąrašui žiūrėkite [Changelog][active-model].

9.1 Pastebimi pakeitimai

  • Ištaisyti metodai #keys, #values ActiveModel::Errors. Pakeistas #keys, kad grąžintų tik tuos raktus, kuriuose nėra tuščių pranešimų. Pakeistas #values, kad grąžintų tik ne tuščias reikšmes. (Pull Request)

  • Pridėtas metodas #merge! ActiveModel::Errors. (Pull Request)

  • Leidžiama perduoti Proc arba Symbol parametrą ilgio tikrinimo nustatymams. (Pull Request)

  • Įvykdyti ConfirmationValidator tikrinimą, kai _confirmation reikšmė yra false. (Pull Request)

  • Modeliai, naudojantys atributų API su proc numatytuoju nustatymu, dabar gali būti serijamuojami. (Commit)

  • Nesugadinti visų daugybinių :includes su nustatymais serijavime. (Commit)

10 Active Support

Išsamesniam pakeitimų sąrašui žiūrėkite Changelog.

10.1 Pašalinimai

  • Pašalintas pasenusių :if ir :unless eilučių filtravimo naudojant stringą pasirinkimas. (Commit)

  • Pašalintas pasenusių halt_callback_chains_on_return_false pasirinkimas. (Commit)

10.2 Pasenusios funkcijos

  • Pasenusas Module#reachable? metodas. (Pull Request)

  • Pasenusas secrets.secret_token. (Commit)

10.3 Pastebimi pakeitimai

  • Pridėtas fetch_values metodas HashWithIndifferentAccess. (Pull Request)

  • Pridėta palaikymas :offset parametrui Time#change. (Commit)

  • Pridėtas palaikymas :offset ir :zone ActiveSupport::TimeWithZone#change. (Commit)

  • Pridėti gem pavadinimas ir pasenusios funkcijos laikotarpis į pranešimus apie pasenusias funkcijas. (Pull Request)

  • Pridėtas palaikymas versijoms skirtoms kešo įrašams. Tai leidžia kešo saugykloms pernaudoti kešo raktus, labai taupant vietą dažnai keičiamose situacijose. Veikia kartu su #cache_key ir #cache_version atskyrimu Active Record ir jo naudojimu Action Pack fragmentų kešavime. (Pull Request)

  • Pridėkite ActiveSupport::CurrentAttributes, kad būtų galima naudoti gijos izoliuotą atributų vienintelę. Pagrindinis naudojimo atvejis yra visų užklausos atributų lengvas prieinamumas visam sistemai. (Pull Request)

  • #singularize ir #pluralize dabar gerbia neįskaitomus skaičius nurodytai lokalėjai. (Commit)

  • Pridėkite numatytąją parinktį class_attribute. (Pull Request)

  • Pridėkite Date#prev_occurring ir Date#next_occurring, kad grąžintumėte nurodytą kitą/antrą atsitiktinę savaitės dieną. (Pull Request)

  • Pridėkite numatytąją parinktį modulio ir klasės atributo prieigos metodams. (Pull Request)

  • Cache: write_multi. (Pull Request)

  • Numatytoji ActiveSupport::MessageEncryptor naudoja AES 256 GCM šifravimą. (Pull Request)

  • Pridėkite freeze_time pagalbininką, kuris užšaldytų laiką testuose į Time.now. (Pull Request)

  • Padarykite Hash#reverse_merge! tvarką nuoseklią su HashWithIndifferentAccess. (Pull Request)

  • Pridėkite paskirties ir galiojimo palaikymą ActiveSupport::MessageVerifier ir ActiveSupport::MessageEncryptor. (Pull Request)

  • Atnaujinkite String#camelize, kad būtų pateikiamas atsakymas, kai perduodama neteisinga parinktis. (Pull Request)

  • Module#delegate_missing_to dabar iškelia DelegationError, jei tikslas yra nil, panašiai kaip Module#delegate. (Pull Request)

  • Pridėkite ActiveSupport::EncryptedFile ir ActiveSupport::EncryptedConfiguration. (Pull Request)

  • Pridėkite config/credentials.yml.enc, kad būtų galima saugoti produkcinės programos paslaptis. (Pull Request)

  • Pridėkite raktų keitimo palaikymą MessageEncryptor ir MessageVerifier. (Pull Request)

  • Grąžinkite HashWithIndifferentAccess egzempliorių iš HashWithIndifferentAccess#transform_keys. (Pull Request)

  • Hash#slice dabar naudoja Ruby 2.5+ įdiegtą apibrėžimą, jei jis yra apibrėžtas. (Commit)

  • IO#to_json dabar grąžina to_s atvaizdavimą, o ne bandymą konvertuoti į masyvą. Tai ištaiso klaidą, kai IO#to_json iškeltų IOError, kai jis būtų iškviestas su negalima objektu. (Pull Request)

  • Pridėkite tą patį metodo parašą Time#prev_day ir Time#next_day, atitinkamai su Date#prev_day, Date#next_day. Leidžia perduoti argumentą Time#prev_day ir Time#next_day. (Commit)

  • Pridėkite tą patį metodo parašą Time#prev_month ir Time#next_month, atitinkamai su Date#prev_month, Date#next_month. Leidžia perduoti argumentą Time#prev_month ir Time#next_month. (Commit)

  • Pridėkite tą patį metodo parašą Time#prev_year ir Time#next_year, atitinkamai su Date#prev_year, Date#next_year. Leidžia perduoti argumentą Time#prev_year ir Time#next_year. (Commit)

  • Ištaisykite akronimų palaikymą humanize. (Commit)

  • Leiskite naudoti Range#include? su TWZ intervalais. (Pull Request)

  • Cache: Numatytoji savybių suspaudimo įjungimo reikšmė yra > 1 kB. (Pull Request)

  • Redis kešo saugykla. (Pull Request, Pull Request)

  • Tvarkykite TZInfo::AmbiguousTime klaidas. (Pull Request)

  • MemCacheStore: Palaikykite laikinąjį skaitiklį. (Commit)

  • Padarykite, kad ActiveSupport::TimeZone.all grąžintų tik laiko juostas, kurios yra ActiveSupport::TimeZone::MAPPING. (Pull Request)

  • Pakeistas ActiveSupport::SecurityUtils.secure_compare numatytasis elgesys, kad netekti informacijos apie ilgio net ir kintamo ilgio eilutės. Pervadintas senas ActiveSupport::SecurityUtils.secure_compare į fixed_length_secure_compare ir pradėta kelti ArgumentError klaida, jei perduotų eilučių ilgiai neatitinka. (Pull Request)

  • Naudojamas SHA-1 algoritmas, kad būtų sugeneruojami nesvarbūs skaitmeniniai raktai, pvz., ETag antraštė. (Pull Request, Pull Request)

  • assert_changes visada tikrins, ar išraiška pasikeitė, nepriklausomai nuo from: ir to: argumentų kombinacijų. (Pull Request)

  • Pridėtas trūkstamas instrumentavimas read_multi metodui ActiveSupport::Cache::Store. (Pull Request)

  • Palaikomas hash kaip pirmasis argumentas assert_difference metode. Tai leidžia nurodyti kelis skaitinius skirtumus tame pačiame tikrinime. (Pull Request)

  • Podėlio: MemCache ir Redis read_multi ir fetch_multi pagreitinimas. Pirmiausia skaitykite iš vietinės atmintinės podėlio, o tik tada kreipkitės į pagrindinį serverį. (Commit)

11 Active Job

Išsamius pakeitimus žiūrėkite [Changelog][active-job].

11.1 Pastebimi pakeitimai

  • Leidžiama perduoti bloką į ActiveJob::Base.discard_on, kad būtų galima pasirinktinai tvarkyti atmetamus darbus. (Pull Request)

12 Ruby on Rails vadovai

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

12.1 Pastebimi pakeitimai

13 Autoriai

Žiūrėkite visą sąrašą žmonių, prisidėjusių prie Rails, 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.