Vim - sort ruby methods by name

Yesterday I had to refactor a very large ruby class. It had a lot of methods and, to make it cleaner, I decided to sort methods alphabetically. Is there a way to do this in vim? Of course there is, and it’s quite tricky - so let’s see how we can do it. The basic idea is taken from this post on wincent.com, I just adapted it for ruby. All credits to this guy for his work :)...

July 29, 2016 · 2 min · metalelf0

Mocked - a minitest pattern

Minitest is good for mocking, right? Well… Minitest is gaining a lot of popularity and can actually be a 100% replacement for RSpec. It’s a pure ruby testing framework, it’s fast, light weight, and it supports both a test-unit like syntax and a spec engine with Rspec like syntax. Still, when it comes to mocking, it can be a little painful. You have to initialize mocks and verify them manually after running the code under test....

May 11, 2016 · 3 min · metalelf0

Command pattern in ruby and rails

The problem If you have a growing Rails application and you feel your models are getting too fat you might have a problem. We’ve all been educated with the “fat models, thin controllers” dogma - but sometimes putting all the domain logic inside the models has its downsides. As an example, the typical flow of an ActiveRecord object through a Rails request involves: fetching the object from the DB based on the params you receive (controller); doing something with the object inside the model (model); when something goes wrong, you set errors onto the model attributes (model); you finally return the object to the view, and present it accordingly (view)....

May 2, 2016 · 4 min · metalelf0

Null objects in Rails

The problem Recently I’ve seen in a project I work on a lot of occurrences of this code: if user.privacy && user.privacy.enables_page?(...) The first part of the condition above is a bad practice in object oriented design. It forces collaborators of user to know a part of its implementation it could have a privacy or it couldn’t. What we want Wouldn’t it be much better to just write this:...

December 23, 2013 · 2 min · metalelf0

Fluentd usage example with bash and ruby

Fluentd is an open source tool to collect events and logs. Its architecture allows to easily collect logs from different input sources and redirect them to different output sinks. Some input examples are HTTP, syslog, or apache logs, and some output sinks are files, mail, and databases (both RDBMS and NoSQL ones). Also, it allows to parse logs and to extract only the significative parts from each of them; saving this structured information on a DB allows much easier log searching and analysis....

August 9, 2013 · 4 min · metalelf0