Как упомянул @dtanabe, здесь нет действительно хорошего решения, пока не поддержат TypeScript (если они решат). И главная проблема, связанная с выполнением этого на земле пользователя, состоит в том, что в var def (то есть const x: Foo = ...
) у нас нет доступа к типу значения. Если вы в порядке, изменив код с использования распространения на функцию, вы можете сделать что-то вроде этого:
interface A {
a: number;
}
type EnsurePartial<TTarget, TUpdate> =
undefined extends TUpdate[keyof TUpdate]
? never
: TUpdate
declare function update<T>(propsToUpdate: EnsurePartial<A, T>): void
update({}) // OK
update({ a: 42 }) // OK
update({ a: undefined }) // error
update({ c: undefined }) // error
Это собирается варьироваться в зависимости от Вашего приложения направляющих самого.
Большинство этих процессоров зависит от Ваших объектов направляющих, по существу загрузит весь экземпляр направляющих в память. Ваша память Приложения будет зависеть от количества моделей, влияния любых плагинов и преобладающих наивысших условий Вашей среды.
Я имел Часть 256 МБ, выполняющую несколько Полукровок и BackgroundRB, и нашел, что фоновый процесс использовал о той же памяти в качестве экземпляра Полукровки.
Одна опция, которую я всегда любил, помещает Вашу запланированную логику в Контроллер и называет это через Крон с помощью wget или Завихрение. Вы добираетесь для усиления существующего приложения направляющих, и там является очень мало служебным в установке его. Единственной причиной я не пошел с этой опцией в вышеупомянутом случае, было требование для удара очереди каждые 5 секунд (Крон может только работать каждую минуту).
Я также интересовался бы всесторонним сравнением, но одна вещь, которую я могу сказать, состоит в том, что BackgroundRB считают удержанным от использования его автором. В EngineYard они конкретно рекомендуют BackgroundJob, имея тяжелые проблемы с BackgroundRB. Я ничего не услышал о других опциях, которые Вы упоминаете как бы то ни было.
Для низких эксплуатационных расходов мне нравится Фоновое задание. Это работает в Вашем процессе направляющих или через крон, таким образом, нет никаких процессов демона для контроля. На моем сервере Bj в настоящее время использует 35 636 RSS (приблизительно одна ценность процесса направляющих).
Я всегда удивляюсь, когда я слышу о людях использование BackgrounDRB, потому что это в основном не сохраняется.