{"id":17680275,"url":"https://github.com/kostya/forking","last_synced_at":"2025-05-12T23:02:42.440Z","repository":{"id":3762104,"uuid":"4838340","full_name":"kostya/forking","owner":"kostya","description":"Simple processes forking, and restarting. Master process starts as daemon.","archived":false,"fork":false,"pushed_at":"2012-06-30T00:13:24.000Z","size":100,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-16T03:56:17.657Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kostya.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-06-29T23:47:38.000Z","updated_at":"2014-10-16T13:37:08.000Z","dependencies_parsed_at":"2022-08-17T23:05:14.139Z","dependency_job_id":null,"html_url":"https://github.com/kostya/forking","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kostya%2Fforking","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kostya%2Fforking/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kostya%2Fforking/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kostya%2Fforking/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kostya","download_url":"https://codeload.github.com/kostya/forking/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253837406,"owners_count":21971982,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-24T09:06:24.843Z","updated_at":"2025-05-12T23:02:42.364Z","avatar_url":"https://github.com/kostya.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"Forking\n=======\n\nSimple processes forking, and restarting. Master process starts as daemon.\n\n\n    $ gem install forking\n\n\nExample 1.rb (run 5 child processes and capturing logs):\n\n```ruby\n#!/usr/bin/env ruby\nrequire 'rubygems'\nrequire 'forking'\n\nf = Forking.new(:name =\u003e 'test', :working_dir =\u003e File.dirname(__FILE__),\n    :log_file =\u003e \"spawner.log\", :pid_file =\u003e \"spawner.pid\", :sync_log =\u003e true)\n\nf.before_fork do\n  puts \"load env\"\nend\n\nf.after_fork do\n  puts \"restart connects\"\nend\n\n2.times do |i|\n  f.spawn(:name =\u003e \"test1\", :log_file =\u003e \"test1.log\") do\n    loop do\n      puts \"test1 #{i}\"\n      sleep 1\n    end\n  end\nend\n\n3.times do |i|\n  f.spawn(:log_file =\u003e \"test2.log\", :sync_log =\u003e true) do\n    exec 'ruby', '2.rb', '--test'\n  end\nend\n\nf.run!\n```\n\nUsage:\n\n    $ ./1.rb start\n    $ ./1.rb status\n    $ ./1.rb stop\n    $ ./1.rb restart\n\nRespawn childs:\n\n    $ kill -HUP master_pid \n    ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkostya%2Fforking","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkostya%2Fforking","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkostya%2Fforking/lists"}