Sidekiq Metrics Monitoring

Sidekiq Metrics Monitoring

Redis and Sidekiq are popular libraries used by Ruby applications to handle features like caching, queues, and background processing. Capabilities like these are important for growing web applications, and as such require monitoring to ensure they are running smoothly.

There are several solutions in the market that you can use to monitor your Redis instance and check for potential problems. But did you know that Redis and Sidekiq already provide useful APIs you can use to roll out your own monitoring solution? Continue Reading

A Poor Man’s Guide to Handling Application Logic – Part 2

In Part 1 we created a simple library called KantanLogicthat we can use to manage application logic in lieu of other popular libraries. Our library has these main features:

  • Uses Success and Failure result objects for the class output
  • Handles error conditions gracefully
  • Has consistent behavior for the main class and all dependency classes

In our last example, we have a class called CreateAccount that creates a user account and sends a welcome email. When using KantanLogic, the service looks like this: Continue Reading

A Poor Man’s Guide to Handling Application Logic – Part 1

In the Ruby programming language, there are many libraries that can be used to manage business or application logic. Some of the popular ones are dry-rb (framework-agnostic) and ActiveInteraction (used within the Rails framework). The strengths and weaknesses of these libraries are explored in more detail on another article.

While these are great libraries to use and provide enormous benefits to your code architecture, some consideration is needed before using them: Continue Reading

Comparing ActiveInteraction and dry-monads

Rails is an awesome web application framework and it used by a lot of companies to ship features fast and iterate quickly. Developers also love the ecosystem and the stability that the framework offers. But it is not without its criticisms. One of them, which I experienced in my professional work as well, is its lack of direction on how to structure business logic.

The introduction of Concerns provided another layer where this logic can be extracted from models and controllers, but I think that this is still lacking, especially as the complexity of the application grows over time. Continue Reading

Managing Multiple PostgreSQL Versions

During the course of your software development career, you get to use different flavors and versions of databases, such as PostgreSQL. Newer projects and applications often use the latest versions while older projects tend to lag behind in upgrading their stack.

Consequently you need to be able to run different versions of the database in your machine, and be able to switch easily between versions. The alternatives, such as re-installing the desired version when needed or using a different machine for different projects, isn’t practical most of the time. Continue Reading