Try 7x to 11x. That's the amount of reduced RAM usage -- and the amount of increased accommodated users -- on identical hosting by the two apps I rewrote from Rails to Phoenix.
> If there was a framework for being as productive as Rails at half the cost then it would be flourishing.
Bold of you to assume technical merit is the only factor. Historically this has almost never been true. There are a number of web frameworks that perform much better than Rails and are quite easy to work with.
Cargo culting is a powerful force. Corporate inertia -- even more.
> There are a number of web frameworks that perform much better than Rails
If you're measuring hardware loads and busting out your stopwatch to measure response times, then sure.
Bottom line is, there are plenty of good reasons to choose Rails over Phoenix. If you want to label choosing a well-backed framework with an incredibly mature ecosystem "cargo culting" then by all means.
Have fun writing Ecto queries by hand, wiring up document storage on your own, trying to find a standout auth library of choice like devise, finding a library that makes managing database views less of a pain, wiring up end-to-end system testing.
I'll be over here running rails new, wiring up sidekiq to ActiveJob, and building shit with ease.
I thought we all learned popularity does not correlate with quality. It correlates pretty closely with corporate inertia and perceived lower risk of developer churn though. Businesses love tech stack for which there are bigger pools of programmers. Says nothing of the quality of the stacks.
> If you're measuring hardware loads and busting out your stopwatch to measure response times, then sure.
Needlessly snarky. Response times matter in a lot of businesses. Count yourself lucky that it hasn't been an important metric in your work.
> Have fun writing Ecto queries by hand
I do have fun writing those. Most times the code in my functions ends up more readable than the equivalent Rails code I wrote years ago. There are some exceptions where you have to dig deeper. Haven't seen a framework -- Rails included -- that lets you handle all complex cases with zero deeper digging needed. At one point you do have to understand SQL and query optimizations, no ways around it.
> wiring up document storage on your own
What for?
> trying to find a standout auth library of choice like devise
It's called Pow and works very well. Additionally, Elixir's maintainers themselves are authoring such a library at the moment.
> finding a library that makes managing database views less of a pain
We can argue if this is a good thing until the Sun explodes. It really depends on the business. I have consulted for businesses where it was very important and true enough, using a library that's well-tuned for classic web apps (like Ecto and ActiveRecord) isn't the best idea there.
> wiring up end-to-end system testing
For 3.5 years with Elixir this is the first time I hear that this is a problem. Any data to back this up?
> I'll be over here running rails new, wiring up sidekiq to ActiveJob, and building shit with ease.
More power to you. Rails is excellent for an MVP or a prototype and this is well-known. It's what comes after is what has burned me out of it. Its maintenance burden is much higher than many others, including PHP's Laravel.
My point is that it doesn't come with Phoenix out of the box (unless something has changed?), and that difference in philosophy is the core of what I'm getting at. With rails new I'm getting an end-to-end test suite and chrome driver installation for free.
Phoenix also has no plans of implementing something similar to ActiveStorage do they? How about ActiveJob now that elixir developers have rediscovered how great a queueing system is with the adoption of Oban?. Will Phoenix ever make a move to include something like ActionText?
They won't even consider adding basic things for developer productivity like undoing a generator.
https://github.com/phoenixframework/phoenix/issues/2607 https://github.com/phoenixframework/phoenix/issues/1597
The Rails team is much quicker and happier to extract something out of the companies supporting it (Basecamp, GitHub, Shopify, etc) and include it directly in the framework, whereas the Phoenix team seems much less willing to take a "batteries" included approach.
There's a balance of making something easy to use and making something "technically superior". The Rails team seems to care much more deeply about what the framework feels like to use, and the Phoenix team cares more about building something that is "dogmatically perfect" (which you're correlating with quality).
What's easier for someone to learn?
rails g model article title body user:references
mix phx.gen.html Content Article articles title body
I understand what they're going for here, but I'm not sure the tradeoff is worth it. If Phoenix wants to increase their adoption, then I think they need to accept that things like this matter.
$ rails c
Loading production environment (Rails 5.2.0)
[1] pry(main)> s = Subscriber.find_by_email('xyz@abc.com')
=> #<Subscriber:0x000055dbb64c3bb8
id: 12913,
email: "xyz@abc.com",
state: "active",
expires_on: Fri, 15 May 2020 14:10:19 UTC +00:00,
...
[2] pry(main)> s.expires_on += 2.months
=> Wed, 15 Jul 2020 14:10:19 UTC +00:00
[3] pry(main)> s.save!
=> true
It is done now! Good luck! Bye! - end of call.Cargo culting? From whom? I don't give a sh*.
What you describe is not exclusive to Rails.