Запущение программы Ruby как служба Windows?

Я также столкнулся с той же проблемой, описанные выше методы не будут работать. Я случайно удалил файлы в следующем каталоге на нем.

Или

~ / Библиотека / Разработчик / Xcode / DerivedData /

32
задан Community 23 May 2017 в 12:01
поделиться

4 ответа

Проверьте следующую библиотеку: Win32Utils. Можно создать простой сервис, который можно запустить/остановить/перезапустить на досуге. Я в настоящее время использую его для управления, экземпляр Полукровки для Windows разместил приложение для направляющих, и это работает безупречно.

25
ответ дан 27 November 2019 в 21:00
поделиться

Когда попытка Win32Utils один действительно потребность к studie документ и просматривает сеть прежде, чем найти некоторый простой рабочий пример. Это, кажется, работает сегодня 02.10.2008:

win32-сервис установки драгоценного камня

Обновление 20.11.2012: Согласно https://stackoverflow.com/users/1374569/paul register_bar.rb должен теперь быть

Service.create( :service_name => 'some_service',
                :host => nil,
                :service_type       => Service::WIN32_OWN_PROCESS,
                :description        => 'A custom service I wrote just for fun',
                :start_type         => Service::AUTO_START,
                :error_control      => Service::ERROR_NORMAL,
                :binary_path_name   => 'c:\usr\ruby\bin\rubyw.exe -C c:\tmp\ bar.rb',
               :load_order_group   => 'Network',
               :dependencies       => ['W32Time','Schedule'],
               :display_name       => 'This is some service'       )
<час>

, bar.rb

создает приложение/демона

LOG_FILE = 'C:\\test.log'

begin
  require "rubygems"
  require 'win32/daemon'

  include Win32

  class DemoDaemon < Daemon

    def service_main
      while running?
      sleep 10
      File.open("c:\\test.log", "a"){ |f| f.puts "Service is running #{Time.now}" } 
    end
  end 

    def service_stop
      File.open("c:\\test.log", "a"){ |f| f.puts "***Service stopped #{Time.now}" }
      exit! 
    end
  end

  DemoDaemon.mainloop
rescue Exception => err
  File.open(LOG_FILE,'a+'){ |f| f.puts " ***Daemon failure #{Time.now} err=#{err} " }
  raise
end 
<час>

, bar.rb является сервисом, но мы должны создать и зарегистрироваться сначала! это может быть сделано с кв/см, создают some_service

, но если мы собираемся использовать рубин и win32utils, мы должны сделать

<час> register_bar.rb

 require "rubygems"
require "win32/service"
   include Win32



   # Create a new service
   Service.create('some_service', nil,
      :service_type       => Service::WIN32_OWN_PROCESS,
      :description        => 'A custom service I wrote just for fun',
      :start_type         => Service::AUTO_START,
      :error_control      => Service::ERROR_NORMAL,
      :binary_path_name   => 'c:\usr\ruby\bin\rubyw.exe -C c:\tmp\ bar.rb',
      :load_order_group   => 'Network',
      :dependencies       => ['W32Time','Schedule'],

      :display_name       => 'This is some service'
   )

Примечание, существует пространство между c:\tmp\ bar.rb в 'c:\usr\ruby\bin\rubyw.exe-C c:\tmp\ bar.rb'

Выполнение ruby register_bar.rb, и теперь можно запустить сервис или с сервисной панели управления окон или

sc start some_service

и смотреть, c:test.log быть заполненным Сервисом выполняет четверг 02 октября 22:06:47, +0200 2008

Для простого из имеет что-то для работы с ним, легче удалить сервисный регистр и создать новый вместо того, чтобы изменить существующий

<час> unregister_bar.rb

 require "rubygems"
    require "win32/service"
       include Win32

    Service.delete("some_service")

Кредиты людям http://rubypane.blogspot.com/2008/05/windows-service-using-win32-service-and_29.html

http://rubyforge.org/docman/view.php/85/595/service.html

16
ответ дан 27 November 2019 в 21:00
поделиться

Можно записать (или загрузка) сервис обертки. Обертка может назвать ruby.exe для выполнения программы. Тот же прием работает на Java, VB, и т.д.

0
ответ дан 27 November 2019 в 21:00
поделиться

Необходимо смочь выполнить это в IronRuby, так как у Вас была бы платформа.NET позади Вас.

0
ответ дан 27 November 2019 в 21:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: