v1.16-dan v1.17-ga yangilash
Qiziqarli yangi xususiyatlar 🎉
- Goravel Lite
- Soddalashtirilgan kod tuzilmasi
- Jarayon Fasad
- Pluralizer Paketi
- Xizmat ko'rsatuvchi ishga tushiruvchilar
Yaxshilanishlar 🚀
- facades kerak bo'lganda o'rnatilishi va o'chirilishi mumkin
- Pochta andozalar orqali yuborilishi mumkin
- build buyrug'i ko'proq bayroqlarni qo'llab-quvvatlaydi
- DB va Orm uchun funksiyalar qo'shish va o'zgartirish
- Schema uchun yangi funksiyalar qo'shish
- Yangi buyruqlar qo'shish
- CSRF token middleware qo‘shish
- Buyruq Argumentlarni sozlashni qo'llab-quvvatlaydi
- make:migration model orqali migratsiya yaratishni qo'llab-quvvatlaydi
- gRPC mijoz ulanishlarini optimallashtirish
- Log json formatda chop etishni qo'llab-quvvatlaydi
- Http bir nechta mijozlarni qo'llab-quvvatlaydi
- Validation kontekstni uzatishni qo'llab-quvvatlaydi
- Orm uchun WithoutGlobalScopes funksiyasini qo'shish
O'zgarishlar 🛠
- machinery navbat haydovchisi olib tashlandi
- gRPC konfiguratsiyasini o‘zgartirish
- Log haydovchisi almashtirildi
- migrate:rollback buyrug'ini optimallashtirish
- Http.Request.Bind funksiyasi olib tashlandi
- Paket sozlash metodini o‘zgartirish
v1.17.1
- Statik bayroq bilan build buyrug‘i xatosini tuzatish
- Ba‘zi make buyruqlari eski kod tuzilmasiga mos kelmasligini tuzatish
- Eski versiya loyihasida paket o‘rnatishda sozlamani optimallashtirish
- Navbat konkurentligi 1 dan katta bo‘lganda kechiktirilgan vazifa muammosini tuzatish
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
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 upgrade2. Yangi xizmat ko'rsatuvchilarni qo'shish
// 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:
"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:
// 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:installvapackage:uninstallbuyruqlari orqali kerak bo'lganda o'rnatish va o'chirish mumkin. goravel/goravel==goravel/goravel-lite+ barcha facades-lar.goravel/goraveluchun har qanday yaxshilanishlargoravel/goravel-litega yuborilishi kerak, so'ngra maxsus github action o'zgarishlarnigoravel/goravelga sinxronlashtiradi. Vagoravel/goravelfoydalanuvchilar 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.
- Barcha
kenel.gova standart*_service_providers.gofayllarini olib tashlang.*_service_providers.gofayllaridagi konfiguratsiyalarnibootstrappapkasiga ko'chiring. - Barcha facades-larni framework ichkarisidan
app/facadespapkasiga ko'chiring, foydalanuvchilar ularni kerak bo'lganda moslashtirishi yoki kengaytirishi mumkin. - Facades-larni ishga tushirish jarayonini soddalashtiring, endi
main.gofaylida facades-larni ishga tushirish shart emas, batafsil ma'lumot uchun Xizmat ko'rsatuvchi ishga tushiruvchilar ga qarang. 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.
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.
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.
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.
"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.
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.
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:
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.
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:
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.
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.
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:
// Oldin
Sum(column string) (int64, error)
// Keyin
Sum(column string, dest any) errorSchema uchun yangi funksiyalar qo'shildi
Ma'lumotlar bazasi sxema boshqaruv imkoniyatlarini kengaytirish uchun Schema paketiga yangi funksiyalar qo'shildi.
DateTimes: Jadvaldacreated_atvaupdated_atustunlarini 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.
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.
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.
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.
// config/grpc.go
"clients": map[string]any{
"servers": map[string]any{ 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:
// 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:
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.
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:
// 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.
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.
Navbat konkurentligi 1 dan katta bo‘lganda kechiktirilgan vazifa muammosini tuzatish
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.
