SOLID principles in Ruby

Category: Design Patterns :: Published at: 23.05.2022

SOLID is a popular group of design principles and if you are a developer, for sure you had contact with it.

It is must if you want to get a nice job, but still many programmers have a problem to deal with this in 100%.

This is my explanation what is SOLID about in Ruby ecosystem.

Read more

How accessors work in Ruby?

Category: Ruby :: Published at: 20.05.2022

Accessors can be hard to understand for new developers. 

In this article i will try to explain how they work and when to use them.

Read more

CQRS Pattern in Ruby

Category: Design Patterns :: Published at: 19.05.2022

In simple words CQRS is dividing the reading part of the model from the writing part.

Instead of one, we have 2 models with different responsibilities.

Read more

Value Objects in Ruby - how it works?

Category: Design Patterns :: Published at: 19.05.2022

Value Object is quite popular design pattern, but it can be messy to implement it well.

This is my implementation of value objects. 

Read more

How to create custom Error with passing data

Category: Ruby :: Published at: 21.04.2022

Sometimes raising error is not enough. As probably you know, you can use command like this:

raise ActiveModel::StrictValidationFailed, "Some message"

This command will return 500 error on your website + it will log into your console the name of the error and message you passed in.

But it won't give you any context. This is big problem if for example you call API and your response is bad.
You want to know, what is happening there directly.

Fortunately there is some solution for it.

Read more

gitlab, github - Permission denied (publickey,keyboard-interactive)

Category: Ruby :: Published at: 06.04.2022

Today i've suffered some issue with a SSH key. I've tried to clone my repository from

Unfortunately i've received an error:

Permission denied (publickey,keyboard-interactive)

I've thought, i have problem with a SSH key. Unfortunately, adding a SSH key did not resolve the problem.

How to resolve it?

Read more