Genie Discord forum
I am working in upgrading my app Genie v4 to v5, but as you know it does not get go around smooth as always. The error is displayed by executing 'repl' is such like bellow. I am considering to build Genie v5 app env then copy my app to it if this migration is not easy as much. Could anyone give me any suggestion to this migration? Every advices are very appreciate. The error message is posted in this thread later, because of the length regulation in a post.
--------Environment------------ Julia v1.8.5 Genie v5.16.0
--------What I did------------ 1.activate 2.instantiate 3.pin Genie@5. <- i did 'pin Genie@4' in using juliav1.7 5.comment out 'push!(...)' in bootstrap.jl 6.run repl -> got error -> resolve() -> run repl agein -> above error messages
OK, the msg is here
Ok, the message is this, 'Jetelina' is my app name.
------------Error Message-----------
Loading initializersERROR: LoadError: MethodError: no method matching (::Jetelina.var"#1#3"{String})(::NamedTuple{(:level,
6 invokelatest(::Any; kwargs::Base.Pairs{Symbol, Module, Tuple{Symbol}, NamedTuple{(:context,), Tuple{Module}}}) @ Base ./essentials.jl:731 7 load(; context::Module) @ Genie.Loader ~/.julia/packages/Genie/u6bTz/src/Loader.jl:296 8 genie(; context::Module) @ Genie ~/.julia/packages/Genie/u6bTz/src/Genie.jl:164 9 main() @ Jetelina ~/Desktop/Jetelina/Jetelina/src/Jetelina.jl:8 10 top-level scope @ ~/Desktop/Jetelina/Jetelina/bootstrap.jl:5
That's all. π
This world age problem is something I have not encountered before. Considering your code worked with Genie v4 and not with v5...I guess it's got something to do with Genie. I'll ask @essenciary to take a look.
I also recommend that you upgrade to Julia 1.9, apps start much faster with this version
Thank you Pere, I am going to try to use v1.9, and report it to you later.
Today's error by using julia v1.9.4 is here, after 'activate -> instantiate -> pin Genie@5 -> Genie.loadapp()' with julia v1.9.4 on mac.
Loading libsβ Warning: 2023-12-14 10:44:20 Replacing docs for Jetelina.CSVFileController :: Union{}
in module Jetelina.CSVFileController
β @ Base.Docs docs/Docs.jl:243
ERROR: ArgumentError: Package Jetelina does not have JetelinaReadConfig in its dependencies:
- You may have a partially installed environment. Try
Pkg.instantiate()
to ensure all packages in the environment are installed. - Or, if you have Jetelina checked out for development and have
added JetelinaReadConfig as a dependency but haven't updated your primary
environment's manifest file, try
Pkg.resolve()
. - Otherwise you may need to report an issue with Jetelina Stacktrace: 1 macro expansion @ ./loading.jl:1634 inlined . .
Some *.jl are saied ' not in its dependencies', despite did 'Pkg.resoleve()'. How can I fix its dependencies?
where is that JetelinaReadConfig package hosted? If you have it on a github repo then you can do this from your main project:
] add https://repo-address
If it's on a local folder then do
] dev ./path/to/package
Did it with julia1.9, then got a message as '..has the same name or UUID as the active project'. I guess it was because of doing 'activate .' and 'instantiiate' already. It said 'dev' should be done in the path of exisiting Project.toml. Hum, I guess 'dev' would wanna to change Project.toml and Manifest.toml, it is as same as 'resolve', maybe.
Guessing...... Some my *.jl files have dependency each other, meanwhile developing step by step. For example, in A.jl using B in B.jl using A
It was no problem in v4, becaue each *.jl files were developed one by one, guess the dependency was tidied up. But this dependency has been broken about migrating v4 to v5 due to re-compile all at once. Is there such a thing?
Genie spits out this message when Jetelina is importend to a different machine. Is this related with the issue?
....top-level does not support precompilation but is imported by a module that does. ......Skipping precompilation since precompile(false). Importing ... top-level.
What happens i you include the modules outside of a Genie app? If you're getting circular dependencies I think you should solve those before adding the modules to Genie. Also, in case you need to, you can set the module load order in Genie
https://learn.genieframework.com/docs/reference/workflow/controlling-load-order
No way, I gave up its migration, then switch to 'porting'. I have to put my jl files into Geniev5 env one by one. julia is v1.9. I am doing include() each file by resolving their dependency, it looks fine so far, but I notice 'julia -> using Genie -> Genie.loadapp() -> got erros(not found modules because of dependency) -> include() one by one ' works, then exit() -> 'bin/repl' does not work. I mean precompile cache does not store by include(). It worked in Geniev4. Whats happen? And '.autoload' file does not work.
And also, I am confusing in difference '
Ok, finally I have narrowed down two question in my issue. 1.how can I keep alive compiled cache? Genie5 did not keep them after exiting, despite Genie4 did. 2.how can I load jl files sequentially in real? the '.autoload' file did not work.
My trouble, migrate G4 -> G5, will resolve if 1 will be able to. 2 is B plan for giving up 1.