The generators in amber are a great way to get an application up and running quickly. In addition, they help keep code consistent and following convention.
You can always see the available generators by running amber generate
as below:
$ amber generateParsing Error: The TYPE argument is required.​amber generate [OPTIONS] TYPE NAME [FIELDS1 FIELDS2...]​Arguments:FIELDS (multiple) user:reference name:string body:text age:integer published:boolNAME name of resourceTYPE scaffold, model, controller, migration, mailer, socket, channel, auth​Options:--no-color Disable colored output
Generators can be used multi-word names, the class names will be CamelCase
and file names will be snake_case
, the command line input can be either:
$ amber generate [TYPE] MultiWordName [FIELD1 FIELD2 ...]# OR$ amber generate [TYPE] multi_word_name [FIELD1 FIELD2 ...]
See Scaffolding below for full example.
Examples of Usage
​Scaffolding​
​Auth​
​Model​
​Controller​
​JSON API​
Scaffolding will create the model (and specs), views, controller (and specs) and migrations for a resource. Additionally, it will add the new resource to the nav bar and
$ amber generate scaffold Post title body:text
Rendering Scaffold postnew db/migrations/20171114103058417_create_post.sqlnew spec/models/spec_helper.crnew spec/models/post_spec.crnew src/models/post.crnew spec/controllers/spec_helper.crnew spec/controllers/post_controller_spec.crnew src/controllers/post_controller.crrewritten src/views/layouts/_nav.slangnew src/views/post/_form.slangnew src/views/post/edit.slangnew src/views/post/index.slangnew src/views/post/new.slangnew src/views/post/show.slang
If you scaffold a multi-word resource, the class names will be CamelCase
and file names will be snake_case
, the command line input can be either:
$ amber generate scaffold PostComment post:reference body:text# OR$ amber generate scaffold post_comment post:reference body:text
Rendering Scaffold post_commentnew db/migrations/20171114103306763_create_post_comment.sqlskipped spec/models/spec_helper.crnew spec/models/post_comment_spec.crnew src/models/post_comment.crskipped spec/controllers/spec_helper.crnew spec/controllers/post_comment_controller_spec.crnew src/controllers/post_comment_controller.crrewritten src/views/layouts/_nav.slangnew src/views/post_comment/_form.slangnew src/views/post_comment/edit.slangnew src/views/post_comment/index.slangnew src/views/post_comment/new.slangnew src/views/post_comment/show.slang
$ amber g auth User
Rendering Auth usernew db/migrations/20171019214851_create_user.sqlnew db/seeds.crnew spec/controllers/spec_helper.crnew spec/models/spec_helper.crnew spec/models/user_spec.crnew src/controllers/registration_controller.crnew src/controllers/session_controller.crnew src/handlers/authenticate.crnew src/models/user.crrewritten src/views/layouts/_nav.slangnew src/views/registration/new.slangnew src/views/session/new.slang
$ amber g model Person name:string age:integer
Rendering Model personnew db/migrations/20171019214940_create_person.sqlskipped spec/models/spec_helper.crnew spec/models/person_spec.crnew src/models/person.cr
$ amber g controller Person index:get show:get create:post update:patch
Rendering Controller personskipped spec/controllers/spec_helper.crnew spec/controllers/person_controller_spec.crnew src/controllers/person_controller.cr
$ amber g api Person name:string age:integer
04:09:54 Generate | (INFO) Generating Amber::CLI::Api04:09:54 Generate | (INFO) new spec/models/person_spec.cr04:09:54 Generate | (INFO) identical spec/models/spec_helper.cr04:09:54 Generate | (INFO) new src/models/person.cr04:09:54 Generate | (INFO) new db/migrations/20191031160954280_create_person.sqlFormat ./config/routes.cr04:09:54 Generate | (INFO) new spec/controllers/person_controller_spec.cr04:09:54 Generate | (INFO) identical spec/controllers/spec_helper.cr04:09:54 Generate | (INFO) new
Recipes are available to generate Scaffolding, Controller and Model artifacts in ways that vary from the standard built in generator. See the Recipes option of the Command Line Tool for more information about using recipes to generate applications.