Project

croods

0.0
There's a lot of open issues
A framework for creating CRUDs in Rails APIs
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
 Project Readme

CircleCI Maintainability Test Coverage

Croods

A framework for creating CRUDs in Rails APIs. https://croods-rails.netlify.app

Installation

Add this line to your application's Gemfile:

gem 'croods'

And then execute:

$ bundle

Usage

Resource

Resource is a generic abstraction for any object your app needs to represent. Instead of app/models/ and app/controllers/, with croods we have app/resources/.

Creating a resource

To add a Project resource to your app, start by generating a migration: rails g migration CreateProjects

# It's crucial to write really solid migrations
# croods will use your database schema to build your resources.
class CreateProjects < ActiveRecord::Migration[5.2]
  def change
    create_table :projects do |t|
      t.string :name, null: false
      t.timestamps
    end
  end
end

Then create the module and the main file app/resources/projects/resource.rb:

module Projects
  class Resource < ApplicationResource
  end
end

Last step is to initialize your resource in config/initializers/croods.rb:

Croods.initialize_for(:users, :projects)

Skip actions

Croods creates five basic endpoints for your resource. If you don't want one, you need to skip its action:

module Projects
  class Resource < ApplicationResource
    skip_actions :index, :create, :update, :show, :destroy
  end
end

Skip attributes

By default, every single attribute in your table is exposed in your endpoints. If you don't want this, let croods know:

module Projects
  class Resource < ApplicationResource
    skip_attributes :created_at, :updated_at
  end
end

Extend model

Croods creates a model for your resource. It looks at your database and automatically infers your model's belongs_to associations. But if you need to add code to your model just use extend_model.

module Projects
  class Resource < ApplicationResource
    extend_model  do
      before_create :do_somethig
    end
  end
end

Protip: you can create a Model module and extend_model { include Projects::Model }.

module Projects
  module Model
    extend ActiveSupport::Concern

    included do
      before_create :do_something
    end
  end
end

Authentication

Croods uses devise_token_auth under the hood. To customize which devise modules are loaded, you can pass them as arguments to use_for_authentication!

use_for_authentication!(
  :database_authenticatable,
  :recoverable,
  :rememberable,
  :trackable,
  :validatable
)

Contributing

You can manually check your changes in the dummy Rails app under /todos. Use it to run integration tests since it doesn't have an UI.

  • Clone the repository
  • Install bundler gem install bundler
  • Install gems bin/bundle

To run both Croods-rails' and the example's specs use: bin/rspec

License

The gem is available as open source under the terms of the MIT License.