So, you might either rejoice or be angry that we have a similar feature in the works. Currently, its for code-sharing only, not assets. See the discussion on how we address our personal pains with engines.
No existing functionality was harmed in the making of this feature :).
Multiple apps are not going anywhere, especially because they are a very nice way of seperating things without the overhead of having a gem somewhere else that is hard to keep track of.
Actually, the initial commit didn't even touch any existing methods.
One more question; Could you name me some more reasons why I should use padrino 1.0/sinatra instead of rails for my next startup or client project? (I may reuse them with my team and clients). I am aware from your presentation of speed, non-opinionated aproach etc, but appreciate some more technical advantages/disadvantages for an HN discussion..
As someone who has multiple Padrino apps running at customer sites:
- Almost nothing is activated without explicit choice (except security-related things and really default things, like sessions, mind you). This mitigates the risk of attacks that hit a component that you didn't implement without knowledge. See the XML-parsing attack on Rails (CVE-156) for that hit everyone, even if they were not conciously accepting XML. Padrino users using MiniXML would be affected, but those are only the ones that actually know that they are using it.
- You can learn the whole stack in just a few days. And by learning, I mean: including reading and understanding most of the source. This makes it much easier to get new people on board that didn't learn this specific framework for a few month already.
- Everything that can be changed can be changed via an API. (Almost) no need for monkey-patching.
- Very Rack-friendly. Programming Padrino well means that you leverage a lot of technologies that are standard in the Ruby anyways.
- No unneccessary magic for saving a few lines. The whole bootstrap-process is very straight-forward. If you want to know why something happens, its very easy to figure out the series of events from your code.
- Very low on stack frames. I hadn't figured that out before, but that makes debugging that much easier.
- Theres another thing that I call "load to memory", for lack of a better word: the mental overhead to understand and remember how that part of the framework that you are currently working with really works is low, so its easy to get it into your head once you need it.
- Its _very_ flexible. Everything that Padrino _doesn't_ do also means that you are free to implement things and it won't break during releases. For example, it doesn't really expect a fixed application layout - its just a very well chosen set of default load paths. If you want to change that: go ahead - organize your project in a fashion that makes sense.
- The best convenience parts of Rails (I18n and active_support) are available to you.
And finally: a completely different philosphical approach. We don't serve omakase, we provide you with fresh ingredients, pots and pans, because we believe that _you_ are the best chef.
I use Sinatra a lot, and like the convergence of Padrino towards node and other javascript stuff. After reading the presentation few questions in my mind?
1) Is the routing an extended version of Sinatra's? 2) Is the throughput boost already there in padrino or sinatra?
Actually the our router is totally different, is http_router, which is something very complex and full featured, the new version of Padrino 1.0 will use instead an extended version of sinatra.
Having to deal with the jankiness of Rails engines on a daily basis (on a client project), this feature would have been a life saver.