1 Atnaujinimas į Rails 7.0
Jei atnaujinote esamą aplikaciją, gerai būtų turėti gerą testavimo padengimą prieš pradedant. Taip pat, prieš bandant atnaujinti į Rails 7.0, pirmiausia atnaujinkite į Rails 6.1, jei dar to nedarėte, ir įsitikinkite, kad jūsų aplikacija veikia kaip tikėtasi. Atnaujinimo metu reikėtų atkreipti dėmesį į keletą dalykų, kuriuos galima rasti Upgrading Ruby on Rails gairėse.
2 Pagrindinės funkcijos
3 Railties
Išsamesnę informaciją apie pakeitimus rasite Changelog puslapyje.
3.1 Pašalinimai
- Pašalintas pasenusi
config
dbconsole
.
3.2 Pasenusi funkcija
3.3 Svarbūs pakeitimai
Sprockets dabar yra pasirinktinis priklausomybės įrašas
Gemas
rails
daugiau nebesiremiasprockets-rails
. Jei jūsų aplikacija vis dar naudoja Sprockets, įsitikinkite, kad pridėjotesprockets-rails
į savo Gemfile.gem "sprockets-rails"
4 Action Cable
Išsamesnę informaciją apie pakeitimus rasite Changelog puslapyje.
4.1 Pašalinimai
4.2 Pasenusi funkcija
4.3 Svarbūs pakeitimai
5 Action Pack
Išsamesnę informaciją apie pakeitimus rasite Changelog puslapyje.
5.1 Pašalinimai
Pašalintas pasenusi
ActionDispatch::Response.return_only_media_type_on_content_type
.Pašalintas pasenusi
Rails.config.action_dispatch.hosts_response_app
.Pašalintas pasenusi
ActionDispatch::SystemTestCase#host!
.Pašalintas pasenusi parametrų perdavimo palaikymas
fixture_file_upload
funkcijai, kai kelias yra nurodomas atsižvelgiant įfixture_path
.
5.2 Pasenusi funkcija
5.3 Svarbūs pakeitimai
6 Action View
Išsamesnę informaciją apie pakeitimus rasite Changelog puslapyje.
6.1 Pašalinimai
- Pašalintas pasenusi
Rails.config.action_view.raise_on_missing_translations
.
6.2 Pasenusi funkcija
6.3 Svarbūs pakeitimai
button_to
funkcija dabar automatiškai nustato HTTP veiksmą [method] pagal Active Record objektą, jei objektas naudojamas formuoti URLbutton_to("Do a POST", [:do_post_action, Workshop.find(1)]) # Prieš tai #=> <input type="hidden" name="_method" value="post" autocomplete="off" /> # Po to #=> <input type="hidden" name="_method" value="patch" autocomplete="off" />
7 Action Mailer
Išsamesnę informaciją apie pakeitimus rasite Changelog puslapyje.
7.1 Pašalinimai
- Pašalinti pasenusi
ActionMailer::DeliveryJob
irActionMailer::Parameterized::DeliveryJob
naudaiActionMailer::MailDeliveryJob
.
7.2 Pasenusi funkcija
7.3 Svarbūs pakeitimai
8 Active Record
Išsamesnę informaciją apie pakeitimus rasite Changelog puslapyje.
8.1 Pašalinimai
Pašalintas pasenusi
database
parametras išconnected_to
funkcijos.Pašalintas pasenusi
ActiveRecord::Base.allow_unsafe_raw_sql
.Pašalintas pasenusi
:spec_name
parametras išconfigs_for
funkcijos.Pašalintas pasenusi palaikymas YAML užkrauti
ActiveRecord::Base
objektą naudojant Rails 4.2 ir 4.1 formatus.Pašalintas pasenusi įspėjimas, kai PostgreSQL duomenų bazėje naudojamas
:interval
stulpelis.Dabar intervalo stulpeliai grąžins
ActiveSupport::Duration
objektus vietoje eilučių.Norint išlaikyti senąjį elgesį, galite pridėti šią eilutę į savo modelį:
attribute :column, :string
Pašalintas pasenusi palaikymas išspręsti ryšį naudojant
"primary"
kaip ryšio specifikacijos pavadinimą.Pašalintas pasenusi palaikymas cituoti
ActiveRecord::Base
objektus.Pašalintas pasenusi palaikymas konvertuoti į duomenų bazės reikšmes
ActiveRecord::Base
objektus.Pašalintas pasenusi palaikymas perduoti stulpelį į
type_cast
funkciją.Pašalintas pasenusi
DatabaseConfig#config
funkcija.Pašalintos pasenusios rake užduotys:
db:schema:load_if_ruby
db:structure:dump
db:structure:load
db:structure:load_if_sql
db:structure:dump:#{name}
db:structure:load:#{name}
db:test:load_structure
db:test:load_structure:#{name}
Pašalintas pasenusi palaikymas
Model.reorder(nil).first
funkcijai, skirtai ieškoti naudojant nedeterministinį rikiavimą.Pašalinti pasenusi
environment
irname
argumentai išTasks::DatabaseTasks.schema_up_to_date?
funkcijos.Pašalintas pasenusi
Tasks::DatabaseTasks.dump_filename
funkcija.Pašalintas pasenusi
Tasks::DatabaseTasks.schema_file
funkcija.Pašalintas pasenusi
Tasks::DatabaseTasks.spec
funkcija.Pašalintas pasenusi
Tasks::DatabaseTasks.current_config
funkcija.Pašalintas pasenusi
ActiveRecord::Connection#allowed_index_name_length
funkcija.Pašalintas pasenusi
ActiveRecord::Connection#in_clause_length
funkcija.Pašalintas pasenusi
ActiveRecord::DatabaseConfigurations::DatabaseConfig#spec_name
funkcija.Pašalintas pasenusi
ActiveRecord::Base.connection_config
funkcija.Pašalintas pasenusi
ActiveRecord::Base.arel_attribute
funkcija.Pašalintas pasenusi
ActiveRecord::Base.configurations.default_hash
funkcija.Pašalintas pasenusi
ActiveRecord::Base.configurations.to_h
funkcija.Pašalintos pasenusios
ActiveRecord::Result#map!
irActiveRecord::Result#collect!
funkcijos.Pašalinta pasenusi
ActiveRecord::Base#remove_connection
funkcija.
8.2 Pasenusi funkcija
- Pasenusi
Tasks::DatabaseTasks.schema_file_type
funkcija.
8.3 Svarbūs pakeitimai
Atšaukti transakciją, jei blokas grąžina rezultatą anksčiau nei tikėtasi.
Prieš šį pakeitimą, kai transakcijos blokas grąžindavo rezultatą anksti, transakcija būdavo įvykdyta.
Problema buvo ta, kad laiko limitai, pasiekiami transakcijos bloke, taip pat darė nebaigtą transakciją įvykdytą, todėl tam, kad išvengtumėte šios klaidos, transakcijos blokas yra atšaukiamas.
Sąlygų sujungimas toje pačioje stulpelyje daugiau nebeturės abiejų sąlygų, ir bus vienodai pakeistas naujausia sąlyga.
# Rails 6.1 (IN sąlyga pakeičiama sujungimo pusės lygybės sąlyga) Author.where(id: [david.id, mary.id]).merge(Author.where(id: bob)) # => [bob] # Rails 6.1 (abi konfliktinės sąlygos egzistuoja, pasenusi) Author.where(id: david.id..mary.id).merge(Author.where(id: bob)) # => [] # Rails 6.1 su rewhere, kad pereitumėte prie Rails 7.0 elgesio Author.where(id: david.id..mary.id).merge(Author.where(id: bob), rewhere: true) # => [bob] # Rails 7.0 (taip pat elgesys su IN sąlyga, sujungimo pusės sąlyga vienodai pakeičiama) Author.where(id: [david.id, mary.id]).merge(Author.where(id: bob)) # => [bob] Author.where(id: david.id..mary.id).merge(Author.where(id: bob)) # => [bob]
Aktyvus saugojimas
Išsamius pokyčius žr. Pakeitimų žurnalą.
8.4 Pašalinimai
8.5 Pasenusios funkcijos
8.6 Svarbūs pokyčiai
9 Aktyvus modelis
Išsamius pokyčius žr. Pakeitimų žurnalą.
9.1 Pašalinimai
Pašalintas pasenusių
ActiveModel::Errors
egzempliorių sąrašavimas kaip Hash.Pašalintas pasenusi
ActiveModel::Errors#to_h
.Pašalintas pasenusi
ActiveModel::Errors#slice!
.Pašalintas pasenusi
ActiveModel::Errors#values
.Pašalintas pasenusi
ActiveModel::Errors#keys
.Pašalintas pasenusi
ActiveModel::Errors#to_xml
.Pašalinta pasenusi palaikymo klaidų sujungimo funkcija
ActiveModel::Errors#messages
.Pašalinta pasenusi palaikymo klaidų išvalymo funkcija
ActiveModel::Errors#messages
.Pašalinta pasenusi palaikymo klaidų šalinimo funkcija
ActiveModel::Errors#messages
.Pašalinta palaikymo klaidų priskyrimo funkcija
ActiveModel::Errors#messages
.Pašalintas palaikymas Marshal ir YAML užkrautiems Rails 5.x klaidų formatams.
Pašalintas palaikymas Marshal užkrautiems Rails 5.x
ActiveModel::AttributeSet
formatams.
9.2 Pasenusios funkcijos
9.3 Svarbūs pokyčiai
10 Aktyvus palaikymas
Išsamius pokyčius žr. Pakeitimų žurnalą.
10.1 Pašalinimai
Pašalintas pasenusi
config.active_support.use_sha1_digests
.Pašalintas pasenusi
URI.parser
.Pašalintas palaikymas naudoti
Range#include?
funkciją tikrinti, ar reikšmė yra įtraukta į datos laiko intervalą.Pašalintas pasenusi
ActiveSupport::Multibyte::Unicode.default_normalization_form
.
10.2 Pasenusios funkcijos
Pasenkinimas formatui perduoti
#to_s
funkcijai, naudojant#to_fs
funkcijąArray
,Range
,Date
,DateTime
,Time
,BigDecimal
,Float
irInteger
klasėse.Šis pasenkinimas leidžia Rails programai pasinaudoti Ruby 3.1 optimizacija, kuri pagreitina kai kurių objektų interpoliavimą.
Naujos programos šiose klasėse neturės perrašytos
#to_s
funkcijos, esamos programos gali naudoticonfig.active_support.disable_to_s_conversion
.
10.3 Svarbūs pokyčiai
11 Aktyvus darbas
Išsamius pokyčius žr. Pakeitimų žurnalą.
11.1 Pašalinimai
Pašalinta pasenusi elgsena, kuri nebaigė
after_enqueue
/after_perform
atgalinių iškvietimų, kai ankstesnis atgalinis iškvietimas buvo sustabdytas naudojantthrow :abort
.Pašalinta pasenusi
:return_false_on_aborted_enqueue
parinktis.
11.2 Pasenusios funkcijos
- Pasenkinimas
Rails.config.active_job.skip_after_callbacks_if_terminated
.
11.3 Svarbūs pokyčiai
12 Veiksmo tekstas
Išsamius pokyčius žr. Pakeitimų žurnalą.
12.1 Pašalinimai
12.2 Pasenusios funkcijos
12.3 Svarbūs pokyčiai
13 Veiksmo pašto dėžutė
Išsamius pokyčius žr. Pakeitimų žurnalą.
13.1 Pašalinimai
Pašalintas pasenusi
Rails.application.credentials.action_mailbox.mailgun_api_key
.Pašalinta pasenusi aplinkos kintamojo
MAILGUN_INGRESS_API_KEY
.
13.2 Pasenusios funkcijos
13.3 Svarbūs pokyčiai
14 Ruby on Rails vadovai
Išsamius pokyčius žr. Pakeitimų žurnalą.
14.1 Svarbūs pokyčiai
15 Autoriai
Žr. pilną sąrašą prisidėjusių prie Rails žmonių už daugybę valandų, kurias jie praleido kurdami stabilų ir patikimą Rails karkasą. Pagarba visiems jiems.
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.