Skip to content
This repository has been archived by the owner on Jul 14, 2021. It is now read-only.

actionframework/actionframework

Repository files navigation

ActionFramework

Code Climate

Warning: This framework is developping fast, so a new minor release can include breaking changes with your existing code. Checkout the release page to see what has changed between versions

Ready for action? Ready, set, go!

ActionFramework is a web application framework for Ruby. It's meant for rapid and fun development of your application.

Because of that it is easy to understand and easy to use and customize.

Requirements

It just requires Ruby and RubyGems. I have tested it with Ruby version 1.9.3.

Installation

You can install this framework with the following command:

[sudo] gem install actionframework

To install the development version from Github do the following:

[sudo] curl http://install.actionframework.bramvdb.com/dev | sh

Getting started

You can easily create a project by running:

action new projectname

This will create a basic directory structure needed by ActionFramework in order to run correctly. It will also create a Gemfile and will run "bundle install" in the project directory.

After that, you can directly test your application by running:

rackup

Directory structure

.
├── Gemfile
├── config
│   ├── routes.rb
│   └── settings.rb
├── controllers
│   └── default_controller.rb
├── initializers
├── models
└── views
    └── layout.html.erb

This directory structure will be created by the CLI. It's very similar to Rails, so it will be very familiar for the people already familiar to Rails development.

First, you have a "Gemfile", in this file you are going to specifiy the dependencies for your project. For example when you want to use DataMapper as your ORM, you can do that by adding:

 gem 'datamapper'

to your Gemfile.

Next, we have a directory called "config", this directory is used to store configuration files. Let's begin with the routes.rb file.

Routes

You can specify your routes in the "routes.rb" file which you can find in the "config" directory.

Specifying routes is very similar to Rails:

 ActionFramework::Server.current.routes do
 	# A get route:
 	get "/PATH" => "ControllerName#method"
 	# A post route:
 	post "/PATH" => "ControllerName#method"
 	# etc
 end

You can also use "placeholders" in your routes path. So for example you have a profile page and you want to dynamicly load a user his/her profile from their "id".

ActionFramework::Server.current.routes do
	get "/profile/{{id}}" => "ProfileController#profile"
end

Redirection

You can handle redirection from your controller or from the routes.rb.

ActionFramework::Server.current.routes do
	redirect :to => "/p/{{id}}", :from => "/profile/{{id}}"
end

Controllers

Controllers are loaded from the "controller" directory.

They're deadly easy to use. I will give you an example:

 class ControllerName
	def method
		"Return a string as a response"
	end
 end

But what if you wan't to use templates, like ERB. ActionFramework has built-in support for ERB templates.

class ControllerName
	def method
		erb "templatename"
	end
end

We're planning to support other engines in future releases.

Templating

Templates are loaded from the "views" directory

Their filename must match the following pattern: "TEMPLATENAME.html.erb" In the "views" folder, there also is a file called "layout.html.erb", this file is used to make headers and footers if you like.

E-mail

This is only available in the development release on Github!

ActionFramework also supports sending e-mails. This is done by using the Ruby on Rails ActionMailer. This means you can send mails the "Rails" way.

There is already a sample config populated in config/mailer.rb when you create your project.

For more documentation I would recommend to read the official ActionMailer docs.

FAQ

How do I use Sidekiq with this?

While I was using the framework in one of my applications, I had to use Sidekiq for background proccessing. Sidekiq is easy to install in Rails projects but how to use it with ActionFramework?

Actually the solution was very simple, first create a file called "sidekiq.rb" (or whatever you like) in the root of your project. Then put the following in that file:

require 'bundler'
Bundler.require
ActionFramework::Project.autoimport

After you made that file, you can create your workers, it actually doesn't really matter where you place them, you can place them for example in "./workers", but it can be anywhere you like. In order to be able to use your workers in your ActionFramework application, you need to require your workers from an initializer.

So create a new initializer in "./initializers" called "workers.rb" with the following code:

require './workers/YOUWORKER'
# More workers can be required from this file

Now you can finally start Sidekiq itself:

	$ bundle exec sidekiq -r ./sidekiq.rb

Voila, you just created Sidekiq workers in your ActionFramework project.

Other documentation

I hope this README is clear enough for your to understand how you can use this framework to build your next awesome application. If you have any questions please contact me at Twitter. Better documentation will follow soon.

State of development

Currently the framework is in an alpha stage, but I'm working very hard to get it production ready. Version 1.0.0, will be the first stable release and it will bring a website with full documentation. If you like the project please "star" it!

Changelog

Checkout our changelog here.

Licence

MIT