Без шагов по воспроизведению сломанной системы трудно сказать, что произошло, но в целом я могу сказать, как правильно настроить это, чтобы использовать определенную версию Puppet.
Помогает ли это ? В худшем случае вы можете удалить RVM и переустановить его.
Прежде чем продолжить, позвольте мне отметить, что Puppet 4.10.2 и 4.10.3 были удалены из Rubygems. (Хотя я смог установить его с помощью PDK.)
В остальном я предпочитаю 4.10.4 (только чтобы отличить его от последних 4.10).
Рекомендуется использовать Puppet Development Kit (pdk) . Если вы загружаете и устанавливаете PDK, вам, вероятно, просто нужно выполнить следующие шаги:
pdk convert
rm Gemfile.lock
PUPPET_GEM_VERSION=4.10.4 bundle update # If that version isn't already in PDK.
pdk test unit --puppet-version 4.10.4
Если вы не хотите идти по пути PDK, вы можете попробовать следующие варианты:
gem 'puppet', '4.10.4'
Или:
gem 'puppet', '~> 4.10' # latest 4.10
Затем обновите свой пакет:
rm -f Gemfile.lock
bundle update
PUPPET_GEM_VERSION
, добавив это код (это то, что я делаю, для чего это стоит): if puppetversion = ENV['PUPPET_GEM_VERSION']
gem 'puppet', puppetversion
else
gem 'puppet'
end
А затем:
rm -f Gemfile.lock
PUPPET_GEM_VERSION='~> 4.10' bundle update
Теперь вы можете запускать свои модульные тесты для определенной версии Число марионеток в норме:
bundle exec rake spec
Или как угодно.
Под
«Позвоните в эту службу»
вы имеете в виду управление службой? Например, Start, Stop, Restart и т. Д.? Если да, то да. На www.csharp-examples.net есть хорошая статья, которая покажет вам, как использовать класс ServiceController.
Если, однако, вы имеете в виду отправлять ему сообщения, как если бы это была веб-служба, тогда ответ таков: это зависит от того, как вы раскрываете свой сервис. Службы Windows могут размещать службы WCF, так что это будет хорошим вариантом, если вы хотите предоставить службу Windows клиентам Интернета.
Некоторая ясность может помочь - вы также можете интерпретировать «вызов этой службы» как своего рода вызов удаленного метода из ASP.NET к вашей службе - например, для сохранения некоторого состояния в вашей службе Windows.
Разместите конечную точку службы в службе Windows, например, с помощью удаленного взаимодействия, WCF или простого сервера сокетов TCP. Все это может вызываться клиентами, размещенными в ASP.NET.
Существует множество примеров удаленного взаимодействия и WCF, которые делают именно это - поиск хостинга и одной из этих технологий.
Некоторые ссылки MSDN для чтения:
Вам также следует прочитать о Активации процесса Windows - вы можете обойтись без написания отдельной службы.