Если я правильно понимаю, вы не хотите, чтобы ваш код был связан с NServiceBus или MassTransit, и вы не хотите показывать, какой из них вы используете.
Во-первых, разделение:
Вы выполнили часть этого, определив свой собственный интерфейс IServiceBus
. Пока ваша библиотека зависит только от этого интерфейса, а не от какой-либо реализации, вы не должны быть связаны ни с одним из них.
Чтобы избежать такого соединения, я бы оставил конкретные реализации в отдельных проектах / библиотеках. Ваш «основной» домен также не должен ссылаться напрямую. Если вы можете выполнить модульное тестирование кода без какой-либо конкретной реализации, тогда вы можете свободно переключаться между реализациями.
Когда вы публикуете свою библиотеку, вы можете публиковать композицию вашей базовой библиотеки вместе с реализациями ее интерфейсов, которые вы выбрали.
Затем, скрывая, какая реализация используется:
Что касается не разоблачения, используете ли вы NServiceBus
или MassTransit
, вы не можете. Если кто-то ссылается на вашу библиотеку, и это зависит от одного из этих пакетов, ему также придется добавить этот пакет. Предполагая, что ваша библиотека упакована для NuGet, этот пакет покажет свои зависимости.
Плагины становятся устаревшими теперь, когда можно управлять драгоценными камнями через "config.gem" оператор в environment.rb. Драгоценные камни доступны в масштабе всей системы (не только в одном приложении) и являются имеющими версию в отличие от плагинов.
Я преобразовал все свои плагины к драгоценным камням недавно. Легкий сделать и определенно стоящий того.
Направляющие, кажется, двигают направление драгоценного камня. Я преобразовал большинство своих плагинов в драгоценные камни теперь. Драгоценными камнями легче справиться и подойти лучше к экосистеме Ruby. Почему нам нужны две отдельных системы так или иначе?
Существует все еще проблема с драгоценными камнями однако: не возможно добавить задачи граблей к приложению направляющих от драгоценного камня. Вероятно, то же содержит для генераторов, хотя я не уверен. Если Вы используете, они в Вашем плагине, мигрируя на драгоценный камень еще не возможны. Надо надеяться, это скоро фиксируется.
можно добавить генераторы к направляющим через драгоценные камни. это на самом деле довольно легко, можно просто добавить rails_generators каталог к драгоценному камню. (я думаю, что другие имена каталогов будут работать - я не уверен что поиски направляющих). пример: http://github.com/remi/rackbox/tree/a21c21667c68d5fd51357e28f0742171e9161e9b/rails_generators
что касается добавляющих задач граблей... я должен все же выяснить, что практическое руководство делает это:/
на данный момент у меня есть свои генераторы, добавляют require 'myproject/rails/tasks'
(или что-то) к Rakefile проекта как способ добавить задачи граблей к направляющим от драгоценного камня.
много драгоценных камней просит, чтобы Вы 'загрузили' их в свой проект направляющих, например, sudo огуречный CD установки драгоценного камня rails_app./script/generate огурец # огурец начальной загрузки в Ваше приложение