Seeding Your Phoenix App Database with Random Users
Today, I stumbled upon some rant about how people are hating Ruby on Rails and are giving up. I want to avoid such drama, and I am not exactly one of those who stopped using Ruby on Rails. I still use Ruby on Rails, and teach it every week in fact. I teach people with ambition, and it sort of awakened my lazy self to pursue more challenging work. If beginners are already doing challenging work, why am I not doing more of that?
The weekly open source challenge
All rants are valid. People who have done a lot, especially for the open source community, will experience some kind of fatigue. And a realization that their golden tools and frameworks aren’t so golden sort of heightens the feeling they have wasted their time. Well, if you feel the same way because you invested so much time in the OOP world and suddenly feel like a turtle compared to everyone else, just keep calm and learn everything. I am certain Ruby on Rails is still a good framework.
If you haven’t tried Phoenix framework yet, you should. I don’t like to talk about inefficiencies of a certain framework compared to Phoenix. The real world needs all these frameworks. It’s just that our reality didn’t meet our expectations, and we all dealt with monolithic applications that are challenging to maintain. What I’m most certain about: Elixir and Phoenix can do whatever your favorite language and framework can do today.
The primary roadblock is the small Elixir community, and people are contributing less to open source. I try to release as many packages on Hex.pm despite being a beginner. I don’t have a year experience in Elixir or Phoenix, but I am very experienced as Ruby on Rails developer. There are a lot of similarities.
Recently I have been building a micro-social network that uses it. I do everything from React.js to Elixir work. It’s far from done, but I would likely ship this. Yes, I actually have Ruby on Rails apps that I killed but have started rewriting them to use Phoenix instead. These were started ages ago. OK, not ages. About 2014 or so. In the software world, 2 years feels like lightyears. Everything is changing quickly. You need a bullet train to get somewhere, and a sponge-like ability to absorb data quickly. Like many, I have the fear of being left out. But more than that, I am really obsessed about technologies optimized for better user experience.
Seeding your database with random users
If you’ve spent some time checking your available options for seeding the database, you probably know about faker and for most cases, it is sufficient. Except, when you need to do a demo and make sure it is populated with data which looks closer to real.
Thanks to randomuser.me, it is possible to populate the database the way I wanted it to.
I have published random_user today. I think it’s efficient. To populate a users table with 500 users, you only need a few lines of code.
users = RandomUser.Random.multiple(500) |> RandomUser.Parser.results
We use Enum which is very much like Ruby Enumerable.
Enum.map(users, fn u ->
user = u |> RandomUser.Parser.parse
large_pic = user.picture["large"]
My experience with writing that package was pleasant because of exVCR project. It is an excellent way to test apps that consume API’s.