Importing Data With ROM and Transproc

Importing data into a database can be a complicated task. This process can be quite painful as you need to deal with data transformation, filling in missing information, specifying validation rules, handling errors and so on. Without proper tools to solve this problem it can become more complicated than it should be. In my current project at work I’m dealing with exactly that problem - we’re importing data from YAML documents into a PostgreSQL database. This time I didn’t use popular Ruby tools like ActiveRecord, instead, I decided to leverage the powerful features of ROM - which turned out to be a great choice. ...

July 15, 2015 · 9 min · Peter Solnica

New Transproc Released

Transproc is a small library I wrote a couple of months back. It’s been growing nicely and yesterday its 0.3.0 version was released which redefined how it works and what it really is. I’m exicited about this project as it’s been used in ROM to implement its Mapper component and turned out to be very powerful and flexible while remaining simple. In this post I’d like to show you what transproc really is and how it can be used with other libraries. ...

July 13, 2015 · 3 min · Peter Solnica

Cutting Corners or Why Rails May Kill Ruby

Today I’m tired and frustrated. And it’s not the first time that I have those negative feelings. Typically I just complain on twitter, lose some followers, wait a bit to calm down and move on. But today I need to vent and convert my negative emotions into something constructive and hopefully meaningful to others. Every time I simply whine about certain aspects of Ruby ecosystem and especially Rails people are asking me specific questions that I fail to address properly. Mostly because of a lack of time and the fact twitter is a horrible medium for longer discussions. ...

June 6, 2015 · 6 min · Peter Solnica

Introducing Transproc - functional data transformations for Ruby

Data mapping, or how I prefer to call it - data transformations, is something I’ve tackled in a couple of projects already. First, in DataMapper ORM with its Property API. Then in Virtus, a project that started as an extraction of DataMapper Property API to a separate gem. Then Virtus evolved into something more powerful and quite a lot of people really enjoy using it until this day. The approach used in Virtus and many other libraries similar to Virtus is typical OO design. There are some objects with knowledge about how to handle specific values. This includes data type coercions and also more complex transformations like changing nested Hash into an aggregate using custom entity classes. ...

April 16, 2015 · 4 min · Peter Solnica

8 Things I Learned During 8 Years of Ruby and Rails

Check out a follow-up on Ruby Rogues Exactly 8 years ago I started working professionally as a rails developer. I’ve spent a lot of time working for various clients, on various projects - from small green-field apps to 5+ year old rails monstrosities. In addition to Rails development I got involved in OSS. Back in 2011 I joined DataMapper core team, a couple years later I started working on ROM project and effectively stopped working on DataMapper. ...

March 4, 2015 · 6 min · Peter Solnica

Introducing Yesql for Ruby using ROM

Last week we released a new beta version of ROM and you’ll be able to read more about it on the official blog later this week. Today I’d like to tell you a little bit about a new adapter that I built for ROM that’s based on Yesql from the Clojure world. When I was working on ROM I was paying attention to other languages too searching for inspiration and Yesql was one of my favorite discoveries. I loved the idea because it’s just-so-simple. We don’t like to write SQL but sometimes it’s the best option we have. Hiding SQL behind OO interfaces has its limitations. The more complex query you need to build the harder it becomes if you want to stick to some OO abstractions. ...

March 2, 2015 · 5 min · Peter Solnica

About the new ROM release and what happens next

Last month I wrote about rebooting ROM project and today I’m very happy that after almost 300 commits I pushed Ruby Object Mapper 0.3.0 to rubygems.org. It’s a big milestone as the project enters a new path and ships with a complete support for SQL databases thanks to Sequel. More official and less personal announcement is right here. In this post I’d like to give you more insight into what’s happening with the project and how its development is going to be organized and why. Let me start by saying that I’m very inspired by recent posts on Rubinius blog. Brian mentioned a couple of things I’ve been thinking about myself for a long time and it was amazing for me to read such a beautifuly written articles that talk about diversity in OSS community and the nature of building and releasing software. If you somehow missed those posts I highly recommend reading them. ...

November 24, 2014 · 4 min · Peter Solnica

Ruby Object Mapper Reboot

Rewrite is done. You can read more about it here. I’d like to let you know that after a couple years of work and a lot of thinking I decided to “reboot” ROM project. This decision was not easy and it has a lot of implications but it’s going to be awesome. Here’s why. New philosophy, similar goals If you’ve been following the project you know that the effort started as the next major version of DataMapper and then was renamed to ROM. There were a couple of big features we always wanted to have like a common interface for accessing different types of databases through a library called Axiom. Axiom is an amazing piece of software unfortunately nobody had the time to finish it which effectively blocked evolution of ROM itself. Another problem was that it required a multi-layered architecture to make all the pieces work together which is just a lot of complexity. ...

October 23, 2014 · 3 min · Peter Solnica

Mocking and Ruby

In the “TDD is dead” discussion unit testing and mocking is being mentioned frequently. DHH explicitly expressed how much he dislikes mocks and it seems like many people still connect unit testing with mocking or even confuse the two. In case you missed it Martin Fowler wrote a great article about what should be considered as a unit test. If you’re also confused about mocks and stubs I encourage you to read Mocks Arent’ Stubs. ...

May 22, 2014 · 6 min · Peter Solnica

Help Us Build ROM

Many people have been asking me how they can help us build ROM. This was the hardest question I’ve heard next to “when will it be ready?”. My usual reply was suggesting to join our IRC channel and talk but it really isn’t a good answer as it’s difficult and time consuming to talk about same things all over again that’s why I decided to finally put together this post and explain what’s going on and how you can help. ...

May 17, 2014 · 3 min · Peter Solnica