Rails like command line for kemalyst
You can build the kgen
tool from source:
$ git clone git@github.com:kemalyst/kemalyst-generator.git
$ cd kemalyst-generator/
$ shards install
$ make
You should now have a bin/kgen file to run.
You can symlink this to a more global location like /usr/local/bin to make it easier to use:
$ ln -sf $(pwd)/bin/kgen /usr/local/bin/kgen
Optionally, you can use homebrew to install.
$ brew tap kemalyst/kgen
$ brew install kgen
$ ./bin/kgen --help
kgen [OPTIONS] SUBCOMMAND
Kemalyst Generator
Subcommands:
c alias for console
console
g alias for generate
generate
i alias for init
init
m alias for migrate
migrate
w alias for watch
watch
Options:
-h, --help show this help
-v, --version show version
kgen init app [your_app] -d [pg | mysql | sqlite] -t [slang | ecr] --deps
cd [your_app]
options: -d
defaults to pg. -t
defaults to slang. --deps
will run crystal deps
for you.
This will generate a traditional web application:
- /config - Application and HTTP::Handler config's goes here. The database.yml and routes.cr are here.
- /lib - shards are installed here.
- /public - Default location for html/css/js files. The static handler points to this directory.
- /spec - all the crystal specs go here.
- /src - all the source code goes here.
Generate scaffolding for a resource:
kgen generate scaffold Post name:string body:text draft:bool
This will generate scaffolding for a Post:
- src/controllers/post_controller.cr
- src/models/post.cr
- src/views/post/*
- db/migrations/[datetimestamp]_create_post.sql
- spec/controllers/post_controller_spec.cr
- spec/models/post_spec.cr
- appends route to config/routes.cr
- appends navigation to src/layouts/_nav.slang
To test the demo app locally:
- Create a new Postgres or Mysql database called
[your_app]_development
- Configure your database with one of the following ways.
- Add it in
config/database.yml
- Run
export DATABASE_URL=postgres://[username]:[password]@localhost:5432/[your_app]_development
which overrides theconfig/database.yml
.
- Migrate the database:
kgen migrate up
. You should see output likeMigrating db, current version: 0, target: [datetimestamp] OK [datetimestamp]_create_shop.sql
- Run the specs:
crystal spec
- Start your app:
kgen watch
- Then visit
http://0.0.0.0:3000/
Note: The kgen watch
command uses Sentry to watch for any changes in your source files, recompiling automatically.
If you don't want to use Sentry, you can compile and run manually:
- Build the app
crystal build --release src/[your_app].cr
- Run with
./[your_app]
- Visit
http://0.0.0.0:3000/
See opened issues.
- Fork it ( https://github.com/kemalyst/kemalyst-generator/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request
- TechMagister Arnaud Fernandés - creator, maintainer
- drujensen Dru Jensen - contributor