Full featured MVC Web Framework for the Crystal programming language, largely inspired by Ruby on Rails (ie. implements most of its API).
Frost is to Ruby on Rails what Crystal is to Ruby: similar API, developer hapiness and productivity, but enhanced with static typing (mostly hidden) and incredible performance.
Frost is in developer preview, and must be considered alpha software until further notice. Features may be added, dropped, tweaked, or changed at any time. Please experiment with Frost, contribute to Frost, let's make it incredible, but build software with it at your own risk!
TLDR: using Frost is like using Crystal. It's great, but be prepared to fix your software on a regular basis.
You've been warned :-)
Start by cloning the Frost repository, then use the application generator to
bootstrap your project. For example for a myapp
application:
$ git clone https://github.com/ysbaddaden/frost.git
$ crystal frost/src/cli.cr -- new myapp
$ cd myapp
$ crystal deps install
Nothing fancy, just the regular flow:
Data:
- write migrations in
db/migrations
; - create models in
app/models
; - write tests in
test/models
.
Application Logic:
- add routes to
config/routes.cr
; - create controllers and actions in
app/controllers
; - design views in
app/views
; - write tests in
test/controllers
.
See Getting Started With Frost for an example.
Since Crystal introduces changes on a regular basis, Frost may not compile with the version of Crystal you are using.
The Frost master branch should follow changes in Crystal's master branch, and thus require the Crystal master branch.
Frost releases should always be usable with the latest Crystal release. In some cases it may require the previous Crystal release. In this case, switching to the Frost master branch should fix the compilation errors until a new Frost release is made.
Thanks for considering to contribute! Please see CONTRIBUTING to get started.
Distributed under the MIT License. See MIT-LICENSE
- The Ruby on Rails Team that modeled an awesome framework.
- Julien Portalier (@ysbaddaden) for bringing it to Crystal.