fix(runtime): allow to properly register non app wiring modules (#17284)
This commit is contained in:
parent
c968fe9e4b
commit
60198f077a
@ -53,6 +53,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* (runtime) [#17284](https://github.com/cosmos/cosmos-sdk/pull/17284) Properly allow to combine depinject-enabled modules and non-depinject-enabled modules in app v2.
|
||||
* (baseapp) [#17251](https://github.com/cosmos/cosmos-sdk/pull/17251) VerifyVoteExtensions and ExtendVote initialize their own contexts/states, allowing VerifyVoteExtensions being called without ExtendVote.
|
||||
* (x/auth) [#17209](https://github.com/cosmos/cosmos-sdk/pull/17209) Internal error on AccountInfo when account's public key is not set.
|
||||
* (baseapp) [#17159](https://github.com/cosmos/cosmos-sdk/pull/17159) Validators can propose blocks that exceed the gas limit.
|
||||
|
||||
@ -118,6 +118,31 @@ More information on how work `depinject.Configs` and `depinject.Supply` can be f
|
||||
https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/simapp/app_v2.go#L114-L146
|
||||
```
|
||||
|
||||
### Registering non app wiring modules
|
||||
|
||||
It is possible to combine app wiring / depinject enabled modules with non app wiring modules.
|
||||
To do so, use the `app.RegisterModules` method to register the modules on your app, as well as `app.RegisterStores` for registering the extra stores needed.
|
||||
|
||||
```go
|
||||
// ....
|
||||
app.App = appBuilder.Build(db, traceStore, baseAppOptions...)
|
||||
|
||||
// register module manually
|
||||
app.RegisterStores(storetypes.NewKVStoreKey(example.ModuleName))
|
||||
app.ExampleKeeper = examplekeeper.NewKeeper(app.appCodec, app.AccountKeeper.AddressCodec(), runtime.NewKVStoreService(app.GetKey(example.ModuleName)), authtypes.NewModuleAddress(govtypes.ModuleName).String())
|
||||
exampleAppModule := examplemodule.NewAppModule(app.ExampleKeeper)
|
||||
if err := app.RegisterModules(&exampleAppModule); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// ....
|
||||
```
|
||||
|
||||
:::warning
|
||||
When using AutoCLI and combining app wiring and non app wiring modules. The AutoCLI options should be manually constructed instead of injected.
|
||||
Otherwise it will miss the non depinject modules and not register their CLI.
|
||||
:::
|
||||
|
||||
### Complete `app_v2.go`
|
||||
|
||||
:::tip
|
||||
|
||||
@ -9,6 +9,7 @@ import (
|
||||
|
||||
runtimev1alpha1 "cosmossdk.io/api/cosmos/app/runtime/v1alpha1"
|
||||
appv1alpha1 "cosmossdk.io/api/cosmos/app/v1alpha1"
|
||||
"cosmossdk.io/core/appmodule"
|
||||
"cosmossdk.io/log"
|
||||
storetypes "cosmossdk.io/store/types"
|
||||
|
||||
@ -75,7 +76,26 @@ func (a *App) RegisterModules(modules ...module.AppModule) error {
|
||||
appModule.RegisterInterfaces(a.interfaceRegistry)
|
||||
appModule.RegisterLegacyAminoCodec(a.amino)
|
||||
|
||||
if module, ok := appModule.(module.HasServices); ok {
|
||||
module.RegisterServices(a.configurator)
|
||||
} else if module, ok := appModule.(appmodule.HasServices); ok {
|
||||
if err := module.RegisterServices(a.configurator); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// RegisterStores registers the provided store keys.
|
||||
// This method should only be used for registering extra stores
|
||||
// wiich is necessary for modules that not registered using the app config.
|
||||
// To be used in combination of RegisterModules.
|
||||
func (a *App) RegisterStores(keys ...storetypes.StoreKey) error {
|
||||
a.storeKeys = append(a.storeKeys, keys...)
|
||||
a.MountStores(keys...)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@ -176,8 +176,7 @@ func ProvideInterfaceRegistry(addressCodec address.Codec, validatorAddressCodec
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = interfaceRegistry.SigningContext().Validate()
|
||||
if err != nil {
|
||||
if err := interfaceRegistry.SigningContext().Validate(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
||||
@ -7,6 +7,7 @@ echo "using $SIMD_BIN"
|
||||
if [ -d "$($SIMD_BIN config home)" ]; then rm -r $($SIMD_BIN config home); fi
|
||||
$SIMD_BIN config set client chain-id demo
|
||||
$SIMD_BIN config set client keyring-backend test
|
||||
$SIMD_BIN config set app api.enable true
|
||||
$SIMD_BIN keys add alice
|
||||
$SIMD_BIN keys add bob
|
||||
$SIMD_BIN init test --chain-id demo
|
||||
|
||||
Loading…
Reference in New Issue
Block a user