![]() After years of working with a focus on React and TypeScript, I can't stomach the Rails approach to views. It's such a joy.īut the view layer has not aged well. Ruby as a language is so expressive, so beautifully ergonomic, so easy to read. ![]() It uses lines of code so efficiently, letting you go from zero to product with outrageous speed. I started my professional career with Rails 8 years ago and deeply miss aspects of it. I think I need to make the jump back to being a Rails dev. To think, the way I used to think it was a bad reflection on the ecosystem to see popular gems that haven’t been updated for months, while it was a good sign that Node packages were being updated every day… Lol. My theory is most other frameworks are unwittingly designed around avoidance - people trying to solve painful things “once and for all” so they don’t ever have to worry about them again, while Rails is more about embracing the uncertainty of the future and being smart and measured about it, like: “Yeah you might need to rethink this part of your setup in a few years to scale it, but there’ll be ways and it’ll be fun don’t stress about it now, focus on what matters.” And as a more mature engineer I now realise they were so very right with this attitude, and that it results in much better stability and adaptability to new requirements over time. Now I realise they were just not interested in hype and other bullshit, they never get sucked into the latest scalability trends like I always did, they never cared about being first and trendy, and that’s why Rails is still there and still effective. Back when I used Rails as a young dev I remember loving it but thought it all felt a bit parochial somehow, like they didn’t really get where the web was going. Obviously if you are inheriting a legacy project you have to deal with the cards you are dealt, but these are a good target to move towards even with an old codebase. Use managers, scripts etc to make this as easy and painless as possible. Update early and often: other than dependabot make it a maintenance task to check for updates at least once a week. Use a good dependency manager: for example in Python, use Poetry or pip-tools or similar, rather than manually updating requirements.txt files yourself Separate out your development/testing/production dependencies Remove dependencies which are no longer used in your code. Regularly audit and remove dependencies - when a library author declares they are sunsetting their project, plan on a replacement (even if that is, worst case, a fork). Practice good dependency "hygiene" - only add a dependency when you really need it, and do vetting to ensure it's well-supported, has been updated recently, etc. Use dependabot or similar to make sure you get alerts for any critical updates (like security patches) ![]() Good test coverage (particularly for critical points of your application) including CI pipeline My advice is to set up things as best you can right from the start, to make upgrading a relatively painless process. He says that he accepts the magic things for what they are, and uses them. Good friend of mine started with Ruby, and he loves it. I don't have that feeling with Ruby, and RoR.īut, again, my personal opinion. F# and Rust stand out in terms of hardest to write, but easiest to trust. I went from PHP to Java to C# to F# to JS to Rust. I am not a fan of writing a block somewhere that can be invoked 2 weeks later for the first time and then fail, because someone passed in a number where a string was expected. Now you might say: why use rspec? I inherited this codebase, so gotta do what you gotta do. But that then happens to be part of the let() way in rspec. Writing tests often feels like I'm settings variables left and right without seeing them being used in the current context. Personally, I find it a very hard language to master. I'm new to Ruby, with 13 yoe as a SW engineer. You MUST have an insane amount of test coverage to trust something like this to Ruby.
0 Comments
Leave a Reply. |