I was just starting to learn Grails, and I'm trying to play with the database using the grails console, but I noticed that there is a difference between starting grails console and starting grails , then console :
When starting grails console directly from the terminal:
~/Desktop/Grails-lab/racetrack $ grails console | Compiling 1 source files.....
In console :
groovy> import racetrack.* groovy> def z = new User(userName:"bangkuangwang",fullName:"noge noge",website:"noge.com",email:" email@email.com ",bio:"hello world",password:"123123") groovy> z.save() groovy> println(z.errors) groovy> User.count grails.validation.ValidationErrors: 0 errors Result: 1
When launched using grails , then console :
~/Desktop/Grails-lab/racetrack $ grails | Enter a script name to run. Use TAB for completion: grails> console | Compiling 1 source files.....
In console :
groovy> import racetrack.* groovy> def z = new User(userName:"bangkuangwang",fullName:"noge noge",website:"noge.com",email:" email@email.com ",bio:"hello world",password:"123123") groovy> z.save() groovy> println(z.errors) groovy> User.count Exception thrown groovy.lang.MissingMethodException: No signature of method: racetrack.User.save() is applicable for argument types: () values: [] Possible solutions: save(), save(boolean), save(java.util.Map), wait(), last(), any() at com.springsource.loaded.ri.ReflectiveInterceptor.jlrConstructorNewInstance(ReflectiveInterceptor.java:963) at racetrack.User.save(User.groovy) at racetrack.User$save.call(Unknown Source) at ConsoleScript0.run(ConsoleScript0:3) at com.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1231) at com.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1231)
Can someone explain to me why the 2 grails console launch methods behave differently?