mozilla / openbadges-badgekit

No Longer Maintained
https://badgekit.org
Mozilla Public License 2.0
123 stars 84 forks source link

Fix compatibility with Phusion Passenger #478

Open FooBarWidget opened 9 years ago

FooBarWidget commented 9 years ago

BadgeKit calls app.listen() based on whether module.parent is null. But when BadgeKit is loaded from Passenger, module.parent is not null because Passenger does not run index.js directly, but require()s it from another file.

So in this commit we also check for module.parent.isApplicationLoader in the conditional. Passenger sets this flag, and it is proposed that other apps (e.g. PM2) could set this flag in the future too.

The module.parent.isApplicationLoader mechanism is used by for example the CompoundJS framework, which suffered from a similar problem. The discussion is here: https://groups.google.com/forum/#!topic/phusion-passenger/6Cojr55tzfw

The mechanism is documented in the Passenger 4.0.34 changelog entry: https://github.com/phusion/passenger/blob/release-5.0.6/CHANGELOG#L577-L590

This issue was originally reported here: https://github.com/phusion/passenger/issues/1460 https://github.com/mozilla/openbadges-badgekit/issues/477

FooBarWidget commented 8 years ago

Any updates on this? This should be a pretty simple patch that wouldn't interfere with anything.

cassiemc commented 8 years ago

@davidascher ?