Skip to content
Amethyst is a Rails inspired web-framework for Crystal language
Crystal
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
spec Add a create method to Amethyst module May 5, 2017
src Remove duplicated message of running server Aug 20, 2017
.gitignore Updated documentation to include new Github repo paths and copyright Feb 10, 2018
.travis.yml test against Crystal nightly on Travis Oct 21, 2015
LICENSE
Projectfile Fix travis.yml, removed unnecessary deps from Projectfile Jun 12, 2015
README.md Updated documentation to include new Github repo paths and copyright Feb 10, 2018
shard.lock Revert to main mime branch Apr 25, 2017
shard.yml Updated documentation to include new Github repo paths and copyright Feb 10, 2018

README.md

Amethyst-logo

⚠️ Amethyst is currently undergoing a re-write from the ground up. We'll be releasing the public roadmap soon.

Amethyst is a web framework written in the Crystal language. The goals of Amethyst are to be extremely fast and to provide agility in application development, much like Rails.

Latest version - 0.1.7 Note that Amethyst is at its early stages, so it lacks for whole bunch of things. But 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

Example

Here is classic 'Hello World' in Amethyst

require "crystal-on-rails/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 = Amethyst.new HelloWorldApp
app.serve

# /views/hello.ecr
Hello, <%= name %>

Start your application:

crystal deps
crystal build src/hello.cr

Go to http://localhost:8080/.

Development

Feel free to fork project and make pull-requests.

Contributing

I would be glad for any help with contributing.

  1. Fork it ( https://github.com/amethyst-framework/amethyst/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors

You can’t perform that action at this time.