The project is in a healthy, maintained state
Practical application of clean architecture in a real business idea using ruby.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

= 7.1.3.2
= 3.1.20
= 3.1.0
= 1.0.1
= 1.6.0
= 1.0.1
= 2.2.0
= 6.19.0
= 1.5.6
= 0.8.8
= 13.2.0
= 5.3.0
= 3.6.2
= 7.2.2
= 0.9.36
= 2.6.13
 Project Readme

AuctionFunCore

This lib contains all the business logic necessary to run the auctions. A principle and standard must be strictly followed: The The principle of single responsibility and clean architecture concepts.

Installation

Add this line to your application's Gemfile:

gem 'auction_fun_core'

And then execute:

bundle install

Or install it yourself as:

gem install auction_fun_core

Getting Started

Initially, download the project remotely and copy the templates from the project's environment variables:

git clone git@github.com:ricardopacheco/auction-fun-core.git core
cd core
cp .env.development.template .env.development
cp .env.test.template .env.test

As the idea of this project is to be a lib, it was decided to use a specific environment variable called APP_ENV, so as not to conflict with others if the lib is used by a framework.

Development

Configure the .env.development file with the values according to your machine or network.

Run the commands below to create the database and its structure, remembering to replace the postgres by the user of your postgresql service. By default, if APP_ENV is not provided is considered the value development by default.

OS dependencies

Ruby

Database (PostgreSQL)

sudo apt install build-essential libssl-dev libreadline-dev zlib1g-dev libcurl4-openssl-dev uuid-dev
asdf plugin add postgres
asdf install postgres 16.1
rm -rf $HOME/.asdf/installs/postgres/16.1/data
initdb -D $HOME/.asdf/installs/postgres/16.1/data -U postgres
sudo apt install autoconf patch build-essential rustc libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libgmp-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev uuid-dev
asdf plugin add ruby
asdf install ruby 3.3.0
gem install pg -v 1.5.5 --verbose -- --with-pg-config=$HOME/.asdf/installs/postgres/16.1/bin/pg_config # Fix pg_config
bin/setup

Overmind (Procfile manager)

asdf install golang latest
go install github.com/DarthSim/overmind/v2
asdf reshim

Create database for development environment

  • postgres in rake commands is a name of user for postgres. Change if needed

In current tab:

overmind s -l database

Open a new tab and create development database:

bundle exec rake 'auction_fun_core:db:create_database[postgres]'
bundle exec rake 'auction_fun_core:db:migrate'

Now come back to overmind tab, kill the current database process using Ctrl+c. After that:

overmind start

This will start all required services needed to run core application.

In new tab, you could run seed data for development with

bundle exec rake 'auction_fun_core:db:seed'

Interactive prompt

To experiment with that code, run bin/console for an interactive prompt.

Test

Configure the .env.test file with the values according to your machine or network.

Run the test suite with the coverage report using the command:

APP_ENV=test bundle exec rake auction_fun_core:db:create_database[postgres]
APP_ENV=test bundle exec rake auction_fun_core:db:migrate
CI=true APP_ENV=test bundle exec rspec .

Documentation

This project uses yadr as a documentation tool. To generate documentation and view it, run

bundle exec yard server --reload

Documentation will be available at http://localhost:8808.

If you already use overmind, the documentation server starts automatically.

External resources

License

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