I recently finished a bookmarking application using Ruby on Rails. Although it’s not as robust and full-featured, lets say, like Slack or Twitter, it does scrape information from each website, gets the image of the page to use as the icon, and allows the user to organize them into folders. Additionally, an API was made for the front-end in the end as well. I am not writing this to promote the application, but to share my experience of what I learned and what I wish I would’ve done.
- It’s really easy to get started. There are a lot of great starting templates to start your application, and “gems” which make adding common functionality (login, friendships, etc.) really easy.
- Easy to find developers. There is no shortage of where to find talented (sometimes) Rails developers in a lot of freelance websites like Upwork or Freelance, and even the cheaper ones like Fiverr.
- A lot of places to host your application. Many start with Heroku that lets you preview your app in a live environment without having to setup too much. Later, you should probably move to something like Amazon EC2 or Linode.
- Wide amount of services that you can use with Ruby API’s.
- A lot of “magic” that just works from the beginning. When you set up everything, from the server to search it works pretty easily in the start.
- It starts breaking. You add a gem, or write something that breaks the app, and it is sometimes really tough to find what is the problem.
- Compared to other languages, it is slow if you want to do more advanced, speed or analysis intensive stuff. (Look into Python (Django) instead!)
- Setting up the environment for the Rails application, and keeping it working fine is not great, well at least for me. (I used Cloud66 which made things a lot more bearable. Highly recommend!)
So, what would I have done differently?
- Not use Ruby or Ruby on Rails. I’d instead go with:
- Node.js frameworks like Meteor or Express
- Python frameworks like Django (Python has a HUGE amount of libraries for so many things)
- Go frameworks like Gin for building an API or a larger framework like Revel
- Build separate front-end and a back-end API application and connect them.
- Fully plan out and design the application before writing ANY code. By that, I don’t mean 100% of it, but a good 75% would be good. The more modification you do, the more expensive it gets!