Hi Kevin.
If by “real-time scenarios” you mean a high degree of responsiveness, then yes, Rails can do that. For most Rails applications, performance is mostly a function of the database queries; if they’re fast, your app will be fast.
I’ve only used ActionCable to implement one simple feature, so I’ll leave it to others to comment on how well it scales. You may eventually need to run multiple servers and increase the number of file descriptors to support a large number of sockets.
I use the acts_as_tenant gem extensively in a monolithic Rails application, and it works quite well. Simply add the acts_as_tenant
directive to each model that contains a tenant’s private information and specify which model attribute it should use for filtering, e.g. company_id
. Needless to say, multitenancy needs to be carefully considered in your schema design.
It’s hard to answer open-ended questions about architecture patterns other than to say that Rails gives the architect a lot of flexibility.
Gems: For coding views, I prefer the cleaner syntax of the slim templating language vs. the Rails default of ERB. I use devise for authentication, cancancan for authorization, the invisible_captcha honeypot, valid_email for both syntactic and domain name checking, and better_errors, binding_of_caller, and byebug for debugging.
Last but not least, I make heavy use of the RubyMine IDE. It’s the only software subscription fee that I pay with a smile.
Hope this helps.
Regards, DJ