Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/gdwrd/faat

It's Faat! Gem that will kill your fat model.
https://github.com/gdwrd/faat

Last synced: about 2 months ago
JSON representation

It's Faat! Gem that will kill your fat model.

Awesome Lists containing this project

README

        

# Faat

[![Join the chat at https://gitter.im/xo8bit/faat](https://badges.gitter.im/xo8bit/faat.svg)](https://gitter.im/xo8bit/faat?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Gem Version](https://badge.fury.io/rb/faat.svg)](https://badge.fury.io/rb/faat) [![Code Climate](https://codeclimate.com/repos/5683d90ecbc0bf2f17002347/badges/275483f4f40ccd7c48af/gpa.svg)](https://codeclimate.com/repos/5683d90ecbc0bf2f17002347/feed) [![Test Coverage](https://codeclimate.com/repos/5683d90ecbc0bf2f17002347/badges/275483f4f40ccd7c48af/coverage.svg)](https://codeclimate.com/repos/5683d90ecbc0bf2f17002347/coverage) [![Build Status](https://travis-ci.org/xo8bit/faat.svg?branch=develop)](https://travis-ci.org/xo8bit/faat)

Welcome to `faat` gem!

## Installation

Add this line to your application's Gemfile:

```ruby
gem 'faat'
```

And then execute:

$ bundle

Or install it yourself as:

$ gem install faat

## Usage

Run ```rails generate faat:services {service_name}```,
generator will create folder ```services``` in ```app``` directory, and file ```{service_name}_service.rb```

Run ```rails generate faat:forms {form_name} {attribute_name}:{attribute_type}```,
generator will create folder ```forms``` in ```app``` directory, and file ```{form_name}_form.rb```

###Initialize:
```ruby
@post = Post.new
@post_service = PostService.new(@post)

@post_form = PostForm.new(post_form_params)
```

###Usage:
```ruby
@post_service.destroy => destroy @post
@post_service.update => update @post

PostService.last => Post.last
PostService.all => Post.all
PostService.where(title: "First Test Title") => Post.where(...)
```

###Examples:

In ```post_services.rb```
```ruby
class PostService < Faat::Services::Base
...

def initialize(post_form)
@author = Author.create!(name: post_form.author_name, email: post_form.author_email)
@post = Post.create!(text: post_form.text, title: post_form.title)
send_confirmation_email(@author)
end

...
end
```

In```post_controller.rb```
```ruby
...
def create
@post_form = PostForm.new(post_form_params)
if @post_form.valid?
@post_service = PostService.new(@post_form) => create @author and @post
end
end
```

Some other usage:
```ruby
@post_form = PostForm.new(post_form_params)
@post_form.valid? # or invalid?
@post_form.text => some value
@post_form.author_email => [email protected]
@ost_form.author_name => John Smith
```
## TODO

Add spec/test auto generator

## Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/xo8bit/faat. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.

## License

The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).