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

Ruby on Rails 7.0 Išleidimo Pastabos

Svarbiausi dalykai Rails 7.0:

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 nebesiremia sprockets-rails. Jei jūsų aplikacija vis dar naudoja Sprockets, įsitikinkite, kad pridėjote sprockets-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 URL

    button_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 ir ActionMailer::Parameterized::DeliveryJob naudai ActionMailer::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 ir name 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! ir ActiveRecord::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 ir Integer 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 naudoti config.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 naudojant throw :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.