This is perhaps a newbie question, with intermediate and advanced questions/suggestions in the bottom
I am using local Meteor package for my app (not posted on Atmosphere.js).
When I update this package elsewhere, I proceed with the following:
-
Update version of the package.
-
Delete old package from /packages/ directory of the live app.
-
See my program search for packages 3(?) times and then crash:
Your app is crashing. Here’s the latest log: Errors prevented startup:
While selecting package versions: error: unknown package in top-level dependencies vladimir3000:testpack
Your application has errors. Waiting for file change.
-
Copy new package with new version.
-
See my app picking up the changes and going live again:
vladimir3000:testpack upgraded from 0.0.2 to 0.0.3 =>Meteor server restarted
Is there a way to avoid step 3 and more elegantly instruct meteor to replace one package with another. Meteor update would not work as the package is not on atmosphere.js.
Intermediate question: is private package repository similar to that npmjs offers is available or planned in Galaxy?
Advanced question: is hot swap is something from SOA world not from blood and fibers of Meteor javascript? What about modules in ES2015, how they fit in Meteor? As far as I understand the principle of decoupling packages with distinct features is that when you update some feature, the most user should see is sign “Feature xxx”/“Plugin xxx” is unavailable right now, please, try later for couple of seconds. An d only in the part of the program relevant to that feature. But at the moment I see program crash on any single error in any line of code. How it can be prevented for production?
To sum up, while most of apps currently built with meter do not suffer much from 5-15 downtime, I would be grateful for recipes and experiences of running serious business apps with 0 downtime.