Kontentga o‘tish

v1.16-dan v1.17-ga yangilash

Qiziqarli yangi xususiyatlar 🎉

Yaxshilanishlar 🚀

O'zgarishlar 🛠

v1.17.1

v1.17.2

Yangilash bo'yicha ko'rsatma

Golang v1.23 endi qo'llab-quvvatlanmaydi sababli, Goravel tomonidan qo'llab-quvvatlanadigan Golang versiyasi 1.23 dan 1.24 ga yangilandi.

goravel/example loyihasini v1.16 dan v1.17 ga yangilash PRi yangilash uchun namuna sifatida ishlatilishi mumkin: goravel/example#93.

1. Bog'liqliklarni yangilash

shell
go get github.com/goravel/framework@latest

// Agar gin ishlatilsa
go get github.com/goravel/gin@latest

// Agar fiber ishlatilsa
go get github.com/goravel/fiber@latest

// Agar redis ishlatilsa
go get github.com/goravel/redis@latest

// Agar S3 ishlatilsa
go get github.com/goravel/s3@latest

// Agar Oss ishlatilsa
go get github.com/goravel/oss@latest

// Agar Cos ishlatilsa
go get github.com/goravel/cos@latest

// Agar Minio ishlatilsa
go get github.com/goravel/minio@latest

go mod tidy

// Agar installer ishlatilsa
goravel upgrade

2. Yangi xizmat ko'rsatuvchilarni qo'shish

go
// config/app.go
import (
  ...
  "github.com/goravel/framework/process"
  "github.com/goravel/framework/view"
)

"providers": []foundation.ServiceProvider{
  ...
  &process.ServiceProvider{}, 
  &view.ServiceProvider{}, 
},

3. Http mijoz konfiguratsiyasini o'zgartirish

config/http.go faylida yangi konfiguratsiya qo'shing:

go
"client": map[string]any{ 
  "base_url":                config.GetString("HTTP_CLIENT_BASE_URL"), 
  "timeout":                 config.GetDuration("HTTP_CLIENT_TIMEOUT"), 
  "max_idle_conns":          config.GetInt("HTTP_CLIENT_MAX_IDLE_CONNS"), 
  "max_idle_conns_per_host": config.GetInt("HTTP_CLIENT_MAX_IDLE_CONNS_PER_HOST"), 
  "max_conns_per_host":      config.GetInt("HTTP_CLIENT_MAX_CONN_PER_HOST"), 
  "idle_conn_timeout":       config.GetDuration("HTTP_CLIENT_IDLE_CONN_TIMEOUT"), 
}, 
"default_client": config.Env("HTTP_CLIENT_DEFAULT", "default"), 
"clients": map[string]any{ 
  "default": map[string]any{ 
    "base_url": config.Env("HTTP_CLIENT_BASE_URL", ""), 
    "timeout": config.Env("HTTP_CLIENT_TIMEOUT", "30s"), 
    "max_idle_conns": config.Env("HTTP_CLIENT_MAX_IDLE_CONNS", 100), 
    "max_idle_conns_per_host": config.Env("HTTP_CLIENT_MAX_IDLE_CONNS_PER_HOST", 2), 
    "max_conns_per_host": config.Env("HTTP_CLIENT_MAX_CONN_PER_HOST", 0), 
    "idle_conn_timeout": config.Env("HTTP_CLIENT_IDLE_CONN_TIMEOUT", "90s"), 
  }, 
}, 

4. gRPC konfiguratsiyasini o‘zgartirish

Shunga muvofiq o‘zgartirish kerak: gRPC konfiguratsiyasini o‘zgartirish

5. Agar siz pochta andoza orqali yubormoqchi bo'lsangiz

config/mail.go faylida yangi konfiguratsiya qo'shing:

go
// Andoza Konfiguratsiyasi
//
// Bu elektron pochta ko'rinishlari uchun andoza renderlashni boshqaradi. Andoza dvigatellari global miqyosda keshlanadi va o'rnatilgan haydovchilar ham, fabrikalar orqali maxsus amalga oshirishlar ham qo'llab-quvvatlanadi.
//
// Mavjud Haydovchilar: "html", "custom"
"template": map[string]any{
  "default": config.Env("MAIL_TEMPLATE_ENGINE", "html"),
  "engines": map[string]any{
    "html": map[string]any{
      "driver": "html",
      "path":   config.Env("MAIL_VIEWS_PATH", "resources/views/mail"),
    },
  },
},

6. Agar siz maxsus paket ishlab chiqqan bo‘lsangiz va uni package:install buyrug‘i orqali o‘rnatmoqchi bo‘lsangiz

Shunga muvofiq o‘zgartirish kerak: Paket sozlash metodini o‘zgartirish

7. Agar siz machinery navbat haydovchisidan foydalanayotgan bo'lsangiz

Shunga mos ravishda o'zgartirish kerak: machinery navbat haydovchisi olib tashlandi

8. Agar siz maxsus log haydovchisi yaratgan bo'lsangiz

Shunga mos ravishda o'zgartirish kerak: Log haydovchisi almashtirildi

9. Agar siz Http.Request.Bind funksiyasidan foydalanayotgan bo'lsangiz

Shunga mos ravishda o'zgartirish kerak: Http.Request.Bind funksiyasi olib tashlandi

10. Agar siz validation.Make funksiyasi yoki maxsus qoidalar/filtrlardan foydalanayotgan bo'lsangiz

Shunga mos ravishda o'zgartirish kerak: Validation kontekstni uzatishni qo'llab-quvvatlaydi

11. Agar siz Orm-da global scopes-lardan foydalanayotgan bo'lsangiz

Shunga mos ravishda o'zgartirish kerak: Orm uchun WithoutGlobalScopes funksiyasini qo'shish

Xususiyatlar tanishtiruvi

Goravel Lite

Biz minimal bog'liqliklar va kichikroq hajm bilan ilovalar yaratmoqchi bo'lgan dasturchilar uchun mo'ljallangan, Goravel frameworkining engil versiyasi - Goravel Lite ni tanishtirishdan xursandmiz. U Goravelning asosiy xususiyatlarini taqdim etadi, shu bilan birga dasturchilarga faqat kerakli komponentlarni qo'shish imkonini beradi.

  • Faqat zaruriy facades-larni o'z ichiga oladi: Artisan, Config, bu ortiqcha yukni kamaytiradi va ishlashni yaxshilaydi.
  • Boshqa facades-larni package:install va package:uninstall buyruqlari orqali kerak bo'lganda o'rnatish va o'chirish mumkin.
  • goravel/goravel == goravel/goravel-lite + barcha facades-lar. goravel/goravel uchun har qanday yaxshilanishlar goravel/goravel-lite ga yuborilishi kerak, so'ngra maxsus github action o'zgarishlarni goravel/goravel ga sinxronlashtiradi. Va goravel/goravel foydalanuvchilar uchun Goravel frameworkidan foydalanishning asosiy ombori bo'lib qoladi.

Soddalashtirilgan kod tuzilmasi

Kod tuzilmasi Laravel bilan muvofiqlashtirish, saqlash va o'qilish imkoniyatini yaxshilash uchun soddalashtirildi. Eski tuzilma hali ham ishlatilishi mumkin, bu orqaga mos keladigan o'zgarishdir. Eski tuzilmadan yangi tuzilmaga o'tish biroz murakkab, agar kerak bo'lsa, misol uchun PR mavjud: goravel/example#91.

  1. Barcha kenel.go va standart *_service_providers.go fayllarini olib tashlang. *_service_providers.go fayllaridagi konfiguratsiyalarni bootstrap papkasiga ko'chiring.
  2. Barcha facades-larni framework ichkarisidan app/facades papkasiga ko'chiring, foydalanuvchilar ularni kerak bo'lganda moslashtirishi yoki kengaytirishi mumkin.
  3. Facades-larni ishga tushirish jarayonini soddalashtiring, endi main.go faylida facades-larni ishga tushirish shart emas, batafsil ma'lumot uchun Xizmat ko'rsatuvchi ishga tushiruvchilar ga qarang.
  4. WithPath() funksiyasi orqali katalog tuzilishini sozlashni qo'llab-quvvatlash, batafsil ma'lumot uchun Katalog Tuzilishini Sozlash ga murojaat qiling.

Jarayon Fasad

Goravel endi Go'ning standart os/exec paketi atrofida ifodali va oqlangan API taqdim etadi, bu sizga ilovangizdan tashqi buyruqlarni muammosiz chaqirish imkonini beradi.

Hujjatni Ko'rish

Pluralizer paketi

Goravel endi so'zlarni birlik va ko'plik shakllari o'rtasida til qoidalariga asoslanib o'zgartirishga yordam beradigan pluralizer paketini o'z ichiga oladi. Bu turli tillar va ularning grammatik qoidalarini boshqarishni talab qiladigan ilovalar uchun foydalidir.

Hujjatni Ko'rish

Xizmat ko'rsatuvchi ishga tushiruvchilar

Xizmat ko'rsatuvchilar endi ilova ishga tushganda kodni ishga tushirish uchun Runners interfeysini amalga oshirishi mumkin. Bu odatda Xizmat ko'rsatuvchida aniqlangan xizmatlarni, masalan, Route, Schedule, Queue va boshqalarni ishga tushirish yoki o'chirish uchun ishlatiladi. Endi siz ushbu xizmatlarni main.go faylida qo'lda ishga tushirish yoki o'chirishga muhtoj emassiz, chunki Goravel buni siz uchun boshqaradi.

Bu xususiyat faqat yangi soddalashtirilgan kod tuzilmasi dan foydalanganda mavjud.

Hujjatni Ko'rish

Log json formatda chop etishni qo'llab-quvvatlaydi

Goravel-ning jurnal tizimi endi JSON formatida jurnallarni chiqarishni qo'llab-quvvatlaydi, bu jurnal boshqaruv tizimlari bilan integratsiyalashishni va tuzilgan jurnal yozishni osonlashtiradi.

go
"channels": map[string]any{
  "daily": map[string]any{
    "driver":    "daily",
    "path":      "storage/logs/goravel.log",
    "level":     config.Env("LOG_LEVEL", "debug"),
    "days":      7,
    "print":     true,
    // qiymat "text" yoki "json" bo'lishi mumkin
    "formatter": "json", 
  },
},

Http bir nechta klientlarni qo'llab-quvvatlaydi

Goravel-ning HTTP klient moduli endi bir nechta klientlarni qo'llab-quvvatlaydi, bu sizga ilovangiz ichida turli maqsadlar uchun o'z konfiguratsiyalari bilan turli HTTP klientlarini aniqlash va ulardan foydalanish imkonini beradi.

Hujjatni Ko'rish

Validatsiya kontekstni uzatishni qo'llab-quvvatlaydi

Goravel-ning validatsiya moduli endi validatsiya funksiyalariga kontekstni uzatishni qo'llab-quvvatlaydi, bu so'rov yoki operatsiya kontekstiga asoslangan yanada moslashuvchan va dinamik validatsiya stsenariylarini imkoniyatini beradi.

go
validator, err := facades.Validation().Make(input, rules) 
validator, err := facades.Validation().Make(ctx, input, rules) 

Maxsus qoidalar va filtrlari ham kontekst parametrini qo'llab-quvvatlaydi:

go
type Rule interface {
  Signature() string
  Passes(data Data, val any, options ...any) bool
  Message() string
  Passes(ctx context.Context, data Data, val any, options ...any) bool
  Message(ctx context.Context) string
}

type Filter interface {
  Signature() string
  Handle() any
  Handle(ctx context.Context) any
}

Orm uchun WithoutGlobalScopes funksiyasi qo'shildi

Orm paketiga yangi WithoutGlobalScopes funksiyasi qo'shildi, bu sizga so'rovdan barcha global skoplarni chiqarib tashlash imkonini beradi. Bu global skoplar tomonidan qo'yilgan cheklovlarsiz yozuvlarni olishni istaganingizda foydalidir.

go
var user []User
err := facades.Orm().Model(&User{}).WithoutGlobalScopes().Get(&user)
err := facades.Orm().Model(&User{}).WithoutGlobalScopes("name").Get(&user)

Global skop nomini o'rnatishni qo'llab-quvvatlash uchun modelning GlobalScope interfeysi o'zgartirildi:

go
import "github.com/goravel/framework/contracts/orm"

type User struct {
  orm.Model
  Name string
}

func (r *User) GlobalScopes() []func(orm.Query) orm.Query { 
func (r *User) GlobalScopes() map[string]func(orm.Query) orm.Query { 
  return map[string]func(orm.Query) orm.Query{
    "name": func(query orm.Query) orm.Query {
      return query.Where("name", "goravel")
    },
  }
}

fasadlar kerak bo'lganda o'rnatilishi va o'chirilishi mumkin

Goravel Lite ning chiqarilishi bilan birga, endi fasadlar package:install va package:uninstall buyruqlari orqali kerak bo'lganda o'rnatilishi va o'chirilishi mumkin. Eslatma: bu xususiyat faqat sizning loyihangiz Goravel Lite bilan qurilgan yoki yangi soddalashtirilgan kod tuzilmasi ga yangilangan bo'lsagina mavjud.

Hujjatni Ko'rish

Pochta shablon orqali yuborilishi mumkin

Pochta yuborish endi shablonlarni qo'llab-quvvatlaydi, bu sizga yaxshi izchillik va oson boshqarish uchun oldindan belgilangan shablonlardan foydalanib elektron pochta xabarlarini yuborish imkonini beradi. Shablon http/template va maxsus drayverlarni qo‘llab-quvvatlaydi.

Hujjatni Ko'rish

Build buyrug'i ko'proq bayroqlarni qo'llab-quvvatlaydi

build buyrug'iga yangi --arch va --static bayroqlari qo'shildi, bu sizga nishon arxitekturasini va statik binar qurish kerakligini belgilash imkonini beradi.

DB va Orm uchun funksiyalar qo'shildi va o'zgartirildi

Yangi funksiyalar:

  • Avg(column string, dest any) error: Ustunning o'rtacha qiymatini hisoblaydi.
  • Min(column string, dest any) error: Ustunning minimal qiymatini topadi.
  • Max(column string, dest any) error: Ustunning maksimal qiymatini topadi.
  • WhereAll(columns []string, args ...any) Query: So'rovga "barcha ustunlar mos keladi" bandini qo'shadi.
  • WhereAny(columns []string, args ...any) Query: So'rovga "har qanday ustun mos keladi" bandini qo'shadi.
  • WhereNone(columns []string, args ...any) Query: So'rovga "hech qanday ustun mos kelmaydi" bandini qo'shadi.

O'zgartirilgan funksiyalar:

go
// Oldin
Sum(column string) (int64, error)

// Keyin
Sum(column string, dest any) error

Schema uchun yangi funksiyalar qo'shildi

Ma'lumotlar bazasi sxema boshqaruv imkoniyatlarini kengaytirish uchun Schema paketiga yangi funksiyalar qo'shildi.

  • DateTimes: Jadvalda created_at va updated_at ustunlarini yaratadi.
  • ForeignID: Chet el kalitlari uchun imzosiz katta butun son ustunini yaratadi.
  • ForeignUlid: Chet el kalitlari uchun ULID ustunini yaratadi.
  • ForeignUuid: Chet el kalitlari uchun UUID ustunini yaratadi.

Yangi buyruqlar qo'shildi

  • make:provider: Yangi xizmat ko'rsatuvchi sinfini yaratadi.
  • make:view: Yangi ko'rinish shablon faylini yaratadi.

CSRF token middleware qo‘shish

Saytlararo so'rov soxtalashtirish (CSRF) hujumlaridan himoya qilish uchun yangi middleware qo'shildi. Bu middleware autentifikatsiyadan o'tgan manbalardan kelayotgan so'rovlarni ta'minlash uchun yo'llarga qo'llanilishi mumkin.

Hujjatni Ko'rish

Buyruq Argumentlarni sozlashni qo'llab-quvvatlaydi

Buyruqlar endi argumentlarni sozlashni qo'llab-quvvatlaydi, bu sizga maxsus buyruqlaringiz ichida buyruq qatori argumentlarini samaraliroq aniqlash va boshqarish imkonini beradi.

Hujjatni Ko'rish

make:migration model orqali migratsiya yaratishni qo'llab-quvvatlaydi

make:migration buyrug'i mavjud modellarga asoslangan migratsiyalarni yaratishni qo'llab-quvvatlash uchun takomillashtirildi. Bu modellaringizda aniqlangan tuzilishdan foydalanib migratsiya yaratishni tezlashtiradi.

Hujjatni Ko'rish

gRPC klient ulanishlari optimallashtirildi

gRPC klientlari uchun ishlash va resurslardan foydalanishni optimallashtirish uchun klient ulanishlar havuzi amalga oshirildi. Bu har bir so'rov uchun yangi ulanishlar yaratish o'rniga mavjud ulanishlarni qayta ishlatish imkonini beradi, kechikishni kamaytiradi va samaradorlikni oshiradi.

Machinery navbat haydovchisi olib tashlandi

Machinery navbat haydovchi v1.16 da eskirganligi sababli butunlay olib tashlandi. Agar siz hali ham undan foydalanayotgan bo'lsangiz, boshqa navbat haydovchilariga o'tish uchun v1.16 yangilash hujjati dagi ko'rsatmalarga amal qiling.

gRPC konfiguratsiyasini o‘zgartirish

grpc konfiguratsiyasi grpc.clients dan grpc.servers ga o'zgartirildi va facades.Grpc().Client() funksiyasi eskirgan deb belgilandi va v1.18 da olib tashlanadi, iltimos, uning o'rniga facades.Grpc().Connect() funksiyasidan foydalaning.

go
// config/grpc.go
"clients": map[string]any{ 
"servers": map[string]any{ 
go
facades.Grpc().Client(ctx, "name") 
facades.Grpc().Connect("name") 

Log drayverini almashtirish

Yaxshilangan ishlash va tuzilgan log yozish imkoniyatlari uchun log drayveri logrus dan log/slog ga o‘zgartirildi.

Maxsus log drayver interfeysi o‘zgartirildi:

go
// framework/contracts/log/Logger
package log

type Logger interface {
  // Handle pass channel config path here
  Handle(channel string) (Hook, error) 
  Handle(channel string) (Handler, error) 
}

Eski maxsus log drayverlarini moslashtirish uchun log.HookToHandler funksiyasidan foydalanishingiz mumkin:

go
type CustomLogger struct {}

func (logger *CustomLogger) Handle(channel string) (log.Handler, error) {
  hook := /* your old custom log driver logic */

  return log.HookToHandler(hook), nil
}

Migrate:rollback buyrug‘ini optimallashtirish

Ilgari migrate:rollback buyrug‘i bir vaqtning o‘zida faqat bitta migratsiyani orqaga qaytarar edi, bu Laravel xatti-harakatiga mos kelmaydi. Endi bu buyruq standart bo‘yicha oxirgi to‘plamdagi barcha migratsiyalarni orqaga qaytaradi. Orqaga qaytariladigan to‘plamlar sonini belgilash uchun --step opsiyasidan foydalanishingiz mumkin.

Http.Request.Bind funksiyasini olib tashlash

Http.Request interfeysidagi Bind funksiyasi olib tashlandi. Endi siz response orqali Bind metodidan foydalanishingiz mumkin.

go
var user User
response, err := facades.Http().Bind(&user).Get("https://github.com") 
response, err := facades.Http().Get("https://github.com") 
err = response.Bind(&user) 

Paket sozlash metodini o‘zgartirish

Ilgari, package:install buyrug‘i ishga tushirilganda, paket xizmat provayderi setup.go fayli orqali config/app.go ga o‘rnatilishi mumkin edi. Endi, Soddalashtirilgan Kod Tuzilmasi ishga tushirilganligi sababli, xizmat provayderi bootstrap/providers.go fayliga o‘rnatilishi qo‘llab-quvvatlanadi.

Agar siz faqat yangi kod tuzilmasini qo‘llab-quvvatlamoqchi bo‘lsangiz:

go
// setup/setup.go
package main

import (
  "os"

  "github.com/goravel/framework/packages"
  "github.com/goravel/framework/packages/match"
  "github.com/goravel/framework/packages/modify"
  "github.com/goravel/framework/support/path"
)

func main() {
  // Yo‘llarni olish uchun sozlamani boshlang, bu boshida chaqirilishi kerak.
  setup := packages.Setup(os.Args) 

  appConfigPath := path.Config("app.go")
  postgresServiceProvider := "&postgres.ServiceProvider{}"

  // Yangi kod tuzilmalarida GetModulePath funksiyasi olib tashlandi, uning o‘rniga setup.Paths().Module().Import() dan foydalaning
  modulePath := packages.GetModulePath() 
  moduleImport := setup.Paths().Module().Import() 

  packages.Setup(os.Args).Install( 
  setup.Install( 
      // Postgres xizmat provayderini qo‘shish
      modify.GoFile(appConfigPath). 
        Find(match.Imports()).Modify(modify.AddImport(modulePath)). 
        Find(match.Providers()).Modify(modify.Register(postgresServiceProvider)), 
      modify.RegisterProvider(moduleImport, postgresServiceProvider), 
      ...
    ).
    Uninstall(
      // Postgres xizmat provayderini olib tashlash
      modify.GoFile(appConfigPath). 
        Find(match.Providers()).Modify(modify.Unregister(postgresServiceProvider)). 
        Find(match.Imports()).Modify(modify.RemoveImport(modulePath)), 
      modify.UnregisterProvider(moduleImport, postgresServiceProvider), 
      ...
    ).
    Execute()
}

Agar siz paketingizda eski va yangi kod tuzilmalarini bir vaqtda qo‘llab-quvvatlamoqchi bo‘lsangiz, quyidagi sozlash metodidan foydalaning. Xulosa qilib aytganda, env.IsBootstrapSetup() funksiyasi orqali loyiha yangi kod tuzilmasidan foydalanayotganligini tekshirishingiz, so‘ngra tegishli o‘zgarishlarni qo‘llashingiz kerak. Diqqat: Eski kod tuzilmasiga moslashtirishda match.Providers() ni match.ProvidersInConfig() bilan almashtirish kerak.

go
package main

import (
  "os"

  "github.com/goravel/framework/packages"
  "github.com/goravel/framework/packages/match"
  "github.com/goravel/framework/packages/modify"
  "github.com/goravel/framework/support/env"
  "github.com/goravel/framework/support/path"
)

func main() {
  // Yo‘llarni olish uchun sozlamani boshlang, bu boshida chaqirilishi kerak.
  setup := packages.Setup(os.Args)

  appConfigPath := path.Config("app.go")
  postgresServiceProvider := "&postgres.ServiceProvider{}"

  // Modul import yo‘lini olish uchun yangi setup.Paths().Module().Import() metodidan foydalaning
  moduleImport := setup.Paths().Module().Import()

  setup.Install(
    // Agar eski kod tuzilmasi ishlatilsa, postgres xizmat provayderini app.go ga qo‘shish
    modify.When(func(_ map[string]any) bool {
      return !env.IsBootstrapSetup()
    }, modify.GoFile(appConfigPath).
      Find(match.Imports()).Modify(modify.AddImport(moduleImport)).
      Find(match.ProvidersInConfig()).Modify(modify.Register(postgresServiceProvider))),

    // Agar yangi kod tuzilmasi ishlatilsa, postgres xizmat provayderini providers.go ga qo‘shish
    modify.When(func(_ map[string]any) bool {
      return env.IsBootstrapSetup()
    }, modify.RegisterProvider(moduleImport, postgresServiceProvider)),

  ).Uninstall(
    // Agar eski kod tuzilmasi ishlatilsa, postgres xizmat provayderini app.go dan olib tashlash
    modify.When(func(_ map[string]any) bool {
      return !env.IsBootstrapSetup()
    }, modify.GoFile(appConfigPath).
      Find(match.ProvidersInConfig()).Modify(modify.Unregister(postgresServiceProvider)).
      Find(match.Imports()).Modify(modify.RemoveImport(moduleImport))),

    // Agar yangi kod tuzilmasi ishlatilsa, postgres xizmat provayderini providers.go dan olib tashlash
    modify.When(func(_ map[string]any) bool {
      return env.IsBootstrapSetup()
    }, modify.UnregisterProvider(moduleImport, postgresServiceProvider)),
  ).Execute()
}

Statik bayroq bilan build buyrug‘i xatosini tuzatish

goravel/framework: v1.17.1

Go versiyasi 1.24 ga yangilanganligi sababli ./artisan build -s buyrug‘i --static bayrog‘i bilan ishlamadi.

Ba‘zi make buyruqlari eski kod tuzilmasiga mos kelmasligini tuzatish

goravel/framework: v1.17.1

make:rule, make:filter, make:migration, make:package va boshqa buyruqlar fayllarni yaratishda eski kod tuzilmasiga mos kelmaydi. Endi bu buyruqlar env.IsBootstrapSetup() funksiyasi orqali loyiha yangi soddalashtirilgan kod tuzilmasidan foydalanayotganligini aniqlay oladi va fayllarni to‘g‘ri kataloglarga yaratadi.

Eski versiya loyihasida paket o‘rnatishda sozlamani optimallashtirish

goravel/framework: v1.17.1

Agar siz maxsus paket yaratgan bo‘lsangiz, setup.go faylidagi Providers funksiyasi yangi kod tuzilmasiga moslashishi uchun o‘zgartirildi. Shuning uchun, agar siz eski kod tuzilmasini qo‘llab-quvvatlamoqchi bo‘lsangiz, uni ProvidersInConfig funksiyasi bilan almashtirishingiz kerak. Batafsil ma‘lumot uchun Paket sozlash metodini o‘zgartirish ga qarang.

goravel/framework: v1.17.1

goravel/redis: v1.17.1

Navbat ishchisi konkurentligi 1 dan katta bo‘lganda, kechiktirilgan vazifalar bir necha marta bajariladi. Buning sababi, bir nechta ishchilar kechiktirilgan vazifa mavjud bo‘lganda uni bir vaqtning o‘zida olishi mumkin. Endi kechiktirilgan vazifani bir vaqtning o‘zida faqat bitta ishchi bajarishini ta’minlash uchun tarqatilgan qulf ishlatiladi.

Migrate:rollback buyrug‘ini tuzatish

goravel/framework: v1.17.2

Avvalroq, migrate:rollback buyrug‘i orqaga qaytarilgan migratsiyalarning partiya raqamini sukut bo‘yicha 1 ga o‘rnatgan, bu orqaga qaytarishda muammolarga sabab bo‘lgan. Endi esa buyruq partiya raqamini 1 o‘rniga oxirgi partiya raqamiga o‘rnatadi.

MIT litsenziyasi ostida chiqarilgan