Crystal on Rails (CoR) is a web-application framework for Crystal language. Crystal on Rails aspires to move the forked project foward and implement more features that allow convenient way of building web applications the way Ruby on Rails does. Ultimately it will include all needed to create database-backed web applications in a fast and conveninet way while benefiting from fast performance of a compiled language.
- Updated to Crystal 0.21.0. Fixed to make the tests pass. Enjoy everybody!
- Forked Amethyst. Renamed to Crystal on Rails.
- Inherited a broken project failing to compile including failed compilation of tests.
Latest version - 0.1.7
Note that Amethyst is in its early stage, so it lacks for whole bunch of things. You can give a hand with contributing.
For detailed information, see docs on our wiki below:
Here are some benchmarking results
For now, next things are implemented:
- class-based controllers with method-based actions
- views for actions (*.ecr)
- filters for action
- middleware support
- simple REST routing
- default routes for controller
- path, GET and POST params inside actions
- basic cookies support
- static files serving
- http logger and timer for developers
- simple environments support
- simple session support
Here is classic 'Hello World' in Amethyst
require "amethyst"
class WorldController < Base::Controller
actions :hello
view "hello", "#{__DIR__}/views"
def hello
@name = "World"
respond_to do |format|
format.html { render "hello" }
end
end
end
class HelloWorldApp < Base::App
routes.draw do
all "/", "world#hello"
get "/hello", "world#hello"
register WorldController
end
end
app = HelloWorldApp.new
app.serve
# /views/hello.ecr
Hello, <%= name %>
amethyst-bin is an executable shell script to help you quickly generate your Amethyst application.
It handles installing the base dependencies, views / controllers folder generation and main application file generation.
curl https://raw.githubusercontent.com/Sdogruyol/amethyst-bin/master/amethyst > amethyst && chmod +x amethyst
./amethyst sample
Voila! Your app is ready now you can run it
cd sample && crystal run src/sample.cr
Feel free to fork project and make pull-requests.
I would be glad for any help with contributing.
- Fork it ( https://github.com/Codcore/amethyst/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
- Andrew Yaroshuk Codcore - creator, maintainer