We recently migrated ToolJet (
https://news.ycombinator.com/item?id=27421408)'s server from Ruby ( Rails ) to TypeScript ( Nest.js ). Our goal was to have only one language in our stack so that it will be easy for the open-source contributors. I have been working as a Ruby dev since 2015 and I really love Ruby. Initially I thought we might miss a lot of things when we switch to TS. But it turned out to be a great decision in the end.
The bad:
- Cannot compare Rails' ActiveRecord with TypeORM. TypeORM still lacks proper documentation and sometimes we even had to write raw SQL (or use the query builder feature )for joins.
- Testing using Minitest (Ruby) is easy and the code looks very clean. It is not as easy to go through our Jest tests. Also the test suite required some customisations for small stuffs like cleaning the db after every test.
- There is no clear winner for web frameworks in Node ecosystem. The framework you choose will be less adopted and less matured than Rails.
The good:
- A lot more applicants for the backend roles. We tried to hire senior Ruby developers in June and we got only a few applicants. After switching to Node, hiring has become easy.
- Having only one language in the stack is helping us get contributions from more external developers.
- Nest.js is not very opinionated, we can easily customise it to follow the conventions and directory structure followed by Rails.
We have explained more on our blog:
https://blog.tooljet.com/migrating-toojet-from-ruby-on-rails...