Manage Procfile-based applications

Overview

Foreman

Build Status Code Climate Inline docs

Manage Procfile-based applications

Installation

$ gem install foreman

Ruby users should take care not to install foreman in their project's Gemfile. See this wiki article for more details.

Getting Started

Supported Ruby versions

See .travis.yml for a list of Ruby versions against which Foreman is tested.

Documentation

Ports

Authors

Created and maintained by

David Dollar

Patches contributed by

Contributor List

License

Foreman is licensed under the MIT license.

See LICENSE for the full license text.

Issues
  • Kernel Panic on foreman start?

    Kernel Panic on foreman start?

    I got twice a kernel panic right after running foreman start.

    This is my Procfile:

    memcached: memcached
    solr:      sunspot-solr run --data-directory=./solr/data --solr-home=./solr --log-level=FINE
    solrtest:  RAILS_ENV=test sunspot-solr run --data-directory=./solr/test_data/data --solr-home=./solr --log-level=FINE --port=8981
    redit:     /usr/local/bin/redis-server
    

    and if I run them separately they all work great.

    After the foreman start I see te colored output and then it crashes the entire system, so I must restart. This is the crash log I get after the reboot:

    Interval Since Last Panic Report:  1407050 sec
    Panics Since Last Report:          2
    Anonymous UUID:                    B370E883-1267-4351-AB4B-75FABACE6052
    
    Wed Sep 14 12:24:18 2011
    panic(cpu 2 caller 0xffffff8000328ae2): "Negative open count?"@/SourceCache/xnu/xnu-1699.22.81/bsd/miscfs/specfs/spec_vnops.c:1368
    Backtrace (CPU 2), Frame : Return Address
    0xffffff812d6dbc10 : 0xffffff8000220702 
    0xffffff812d6dbc90 : 0xffffff8000328ae2 
    0xffffff812d6dbcd0 : 0xffffff800032c885 
    0xffffff812d6dbd20 : 0xffffff8000318ee4 
    0xffffff812d6dbd60 : 0xffffff80002fd19a 
    0xffffff812d6dbdb0 : 0xffffff80002fce9e 
    0xffffff812d6dbdf0 : 0xffffff80002fe3c1 
    0xffffff812d6dbe20 : 0xffffff8000316a0f 
    0xffffff812d6dbe50 : 0xffffff8000540dc9 
    0xffffff812d6dbec0 : 0xffffff800023b9db 
    0xffffff812d6dbef0 : 0xffffff800023beda 
    0xffffff812d6dbf20 : 0xffffff800023bf70 
    0xffffff812d6dbf50 : 0xffffff800021e0ce 
    0xffffff812d6dbf90 : 0xffffff80002c1caa 
    0xffffff812d6dbfb0 : 0xffffff80002d7a0c 
    
    BSD process name corresponding to current thread: ruby
    
    Mac OS version:
    11B26
    
    Kernel version:
    Darwin Kernel Version 11.1.0: Tue Jul 26 16:07:11 PDT 2011; root:xnu-1699.22.81~1/RELEASE_X86_64
    Kernel UUID: D52AAB80-B2BC-3C6E-BBEA-78BD28064998
    System model name: MacBookPro8,1 (Mac-94245B3640C91C81)
    
    System uptime in nanoseconds: 38215858656
    last loaded kext at 11176272136: com.apple.driver.AppleHWSensor 1.9.4d0 (addr 0xffffff7f81828000, size 28672)
    loaded kexts:
    com.Logitech.Control Center.HID Driver  3.3.0
    com.apple.driver.AppleHWSensor  1.9.4d0
    com.apple.filesystems.autofs    3.0
    com.apple.driver.AppleMikeyHIDDriver    122
    com.apple.driver.AppleTyMCEDriver   1.0.2d2
    com.apple.driver.AppleHDA   2.1.1f12
    com.apple.driver.AppleMikeyDriver   2.1.1f12
    com.apple.driver.AGPM   100.12.40
    com.apple.driver.AudioAUUC  1.59
    com.apple.driver.AppleUpstreamUserClient    3.5.9
    com.apple.driver.AppleMCCSControl   1.0.24
    com.apple.driver.SMCMotionSensor    3.0.1d2
    com.apple.iokit.IOUserEthernet  1.0.0d1
    com.apple.Dont_Steal_Mac_OS_X   7.0.0
    com.apple.driver.AudioIPCDriver 1.2.0
    com.apple.driver.AppleSMCLMU    2.0.1d2
    com.apple.driver.ACPI_SMC_PlatformPlugin    4.7.0b2
    com.apple.driver.AppleLPC   1.5.1
    com.apple.driver.AppleMuxControl    3.0.8
    com.apple.driver.AppleBacklight 170.1.9
    com.apple.driver.AppleIntelHDGraphics   7.0.4
    com.apple.driver.AppleIntelSNBGraphicsFB    7.0.4
    com.apple.driver.AppleUSBTCButtons  220.8
    com.apple.driver.AppleUSBTCKeyEventDriver   220.8
    com.apple.driver.AppleUSBTCKeyboard 220.8
    com.apple.driver.AppleIRController  309
    com.apple.iokit.SCSITaskUserClient  3.0.0
    com.apple.AppleFSCompression.AppleFSCompressionTypeDataless 1.0.0d1
    com.apple.AppleFSCompression.AppleFSCompressionTypeZlib 1.0.0d1
    com.apple.BootCache 32
    com.apple.iokit.IOAHCIBlockStorage  2.0.0
    com.apple.driver.AppleUSBHub    4.4.0
    com.apple.driver.AirPort.Brcm4331   511.20.10
    com.apple.driver.AppleFWOHCI    4.8.6
    com.apple.driver.AppleSmartBatteryManager   161.0.0
    com.apple.driver.AppleEFINVRAM  1.5.0
    com.apple.driver.AppleSDXC  1.1.0
    com.apple.iokit.AppleBCM5701Ethernet    3.0.6b9
    com.apple.driver.AppleAHCIPort  2.1.8
    com.apple.driver.AppleUSBEHCI   4.4.0
    com.apple.driver.AppleUSBUHCI   4.4.0
    com.apple.driver.AppleACPIButtons   1.4
    com.apple.driver.AppleRTC   1.4
    com.apple.driver.AppleHPET  1.6
    com.apple.driver.AppleSMBIOS    1.7
    com.apple.driver.AppleACPIEC    1.4
    com.apple.driver.AppleAPIC  1.5
    com.apple.driver.AppleIntelCPUPowerManagementClient 166.0.0
    com.apple.nke.applicationfirewall   3.0.30
    com.apple.security.quarantine   1
    com.apple.driver.AppleIntelCPUPowerManagement   166.0.0
    com.apple.kext.triggers 1.0
    com.apple.driver.AppleHDAHardwareConfigDriver   2.1.1f12
    com.apple.driver.DspFuncLib 2.1.1f12
    com.apple.driver.AppleAVBAudio  1.0.0d11
    com.apple.driver.AppleSMBusController   1.0.10d0
    com.apple.iokit.IOFireWireIP    2.2.3
    com.apple.iokit.IOSurface   80.0
    com.apple.iokit.IOBluetoothSerialManager    2.5f17
    com.apple.iokit.IOSerialFamily  10.0.5
    com.apple.iokit.IOAVBFamily 1.0.0d22
    com.apple.iokit.IOAudioFamily   1.8.3fc11
    com.apple.kext.OSvKernDSPLib    1.3
    com.apple.driver.AppleHDAController 2.1.1f12
    com.apple.iokit.IOHDAFamily 2.1.1f12
    com.apple.driver.AppleSMC   3.1.1d2
    com.apple.driver.IOPlatformPluginFamily 4.7.0b2
    com.apple.driver.AppleSMBusPCI  1.0.10d0
    com.apple.driver.AppleGraphicsControl   3.0.8
    com.apple.driver.AppleBacklightExpert   1.0.3
    com.apple.driver.AppleThunderboltEDMSink    1.1.1
    com.apple.driver.AppleThunderboltEDMSource  1.1.1
    com.apple.iokit.IONDRVSupport   2.3
    com.apple.iokit.IOGraphicsFamily    2.3
    com.apple.driver.AppleThunderboltDPOutAdapter   1.3.2
    com.apple.driver.AppleThunderboltDPInAdapter    1.3.2
    com.apple.driver.AppleThunderboltDPAdapterFamily    1.3.2
    com.apple.driver.AppleThunderboltPCIDownAdapter 1.1.6
    com.apple.driver.AppleFileSystemDriver  13
    com.apple.driver.BroadcomUSBBluetoothHCIController  2.5f17
    com.apple.driver.AppleUSBBluetoothHCIController 2.5f17
    com.apple.iokit.IOBluetoothFamily   2.5f17
    com.apple.driver.AppleUSBMultitouch 220.23
    com.apple.iokit.IOUSBHIDDriver  4.4.0
    com.apple.driver.AppleUSBMergeNub   4.4.0
    com.apple.driver.AppleUSBComposite  3.9.0
    com.apple.iokit.IOSCSIMultimediaCommandsDevice  3.0.0
    com.apple.iokit.IOBDStorageFamily   1.6
    com.apple.iokit.IODVDStorageFamily  1.6
    com.apple.iokit.IOCDStorageFamily   1.7
    com.apple.iokit.IOAHCISerialATAPI   2.0.0
    com.apple.iokit.IOSCSIArchitectureModelFamily   3.0.0
    com.apple.driver.XsanFilter 403
    com.apple.driver.AppleThunderboltNHI    1.2.6
    com.apple.iokit.IOThunderboltFamily 1.4.9
    com.apple.iokit.IO80211Family   400.40
    com.apple.iokit.IOUSBUserClient 4.4.0
    com.apple.iokit.IOFireWireFamily    4.4.3
    com.apple.iokit.IOEthernetAVBController 1.0.0d5
    com.apple.iokit.IONetworkingFamily  2.0
    com.apple.iokit.IOAHCIFamily    2.0.6
    com.apple.iokit.IOUSBFamily 4.4.0
    com.apple.driver.AppleEFIRuntime    1.5.0
    com.apple.iokit.IOHIDFamily 1.7.0
    com.apple.iokit.IOSMBusFamily   1.1
    com.apple.security.sandbox  165
    com.apple.kext.AppleMatch   1.0.0d1
    com.apple.security.TMSafetyNet  7
    com.apple.driver.DiskImages 326
    com.apple.iokit.IOStorageFamily 1.7
    com.apple.driver.AppleKeyStore  28.18
    com.apple.driver.AppleACPIPlatform  1.4
    com.apple.iokit.IOPCIFamily 2.6.5
    com.apple.iokit.IOACPIFamily    1.4
    Model: MacBookPro8,1, BootROM MBP81.0047.B0E, 2 processors, Intel Core i7, 2.7 GHz, 8 GB, SMC 1.68f96
    Graphics: Intel HD Graphics 3000, Intel HD Graphics 3000, Built-In, 512 MB
    Memory Module: BANK 0/DIMM0, 4 GB, DDR3, 1333 MHz, 0x80AD, 0x484D54333531533642465238432D48392020
    Memory Module: BANK 1/DIMM0, 4 GB, DDR3, 1333 MHz, 0x80AD, 0x484D54333531533642465238432D48392020
    AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0xD6), Broadcom BCM43xx 1.0 (5.100.98.75.10)
    Bluetooth: Version 2.5.0f17, 2 service, 19 devices, 1 incoming serial ports
    Network Service: AirPort, AirPort, en1
    Serial ATA Device: APPLE SSD TS256C, 251 GB
    Serial ATA Device: MATSHITADVD-R   UJ-8A8
    USB Device: FaceTime HD Camera (Built-in), apple_vendor_id, 0x8509, 0xfa200000 / 3
    USB Device: hub_device, 0x0424  (SMSC), 0x2513, 0xfa100000 / 2
    USB Device: Apple Internal Keyboard / Trackpad, apple_vendor_id, 0x0245, 0xfa120000 / 5
    USB Device: BRCM2070 Hub, 0x0a5c  (Broadcom Corp.), 0x4500, 0xfa110000 / 4
    USB Device: Bluetooth USB Host Controller, apple_vendor_id, 0x821a, 0xfa113000 / 7
    USB Device: hub_device, 0x0424  (SMSC), 0x2513, 0xfd100000 / 2
    USB Device: IR Receiver, apple_vendor_id, 0x8242, 0xfd110000 / 3
    
    opened by elado 44
  • Feature Request: ability to put comments in Procfiles

    Feature Request: ability to put comments in Procfiles

    I'd like to add comments to my Procfile, I tried starting a line with "#" but it complained and failed to boot.

    Comments would be great for documentation for team projects.

    opened by ruckus 36
  • Exported upstart script doesn't seem to always stop correctly?

    Exported upstart script doesn't seem to always stop correctly?

    For example, if there is a procfile line 'clock: source ../.bash_profile; ruby ./scheduler.rb'. (The sourcing is done to use RVM). 'rvmsudo foreman export upstart /etc/init -u brainstem' is used to export. The export command generates a file, brainstem-clock-1.conf, that contains:

    start on starting brainstem-clock stop on stopping brainstem-clock respawn

    exec su - brainstem -c 'cd /home/brainstem/brainstem; export PORT=5200; source ../.bash_profile; ruby ./scheduler.rb >> /var/log/brainstem/clock-1.log 2>&1

    When 'stop brainstem' is run upstart just stops the shell session that is started by su but the child thin processes stick around.

    opened by untoldone 35
  • Don't clobber HOME env variable

    Don't clobber HOME env variable

    Putting the job's cwd into the HOME environment variable is causing problems for people (see discussion on the commit: https://github.com/ddollar/foreman/commit/c1b57b59cf6051dfd78010688f0da034caab8f0e#commitcomment-1651673), and seems like an inappropriate use of the variable.

    I'm curious what sorts of problems this change was intended to solve, and if there is another way to do it.

    opened by cap10morgan 34
  • Foreman start fails on Windows: Bad file descriptor

    Foreman start fails on Windows: Bad file descriptor

    I am having issues running Foreman on Windows using ruby 1.93, standard install, on Windows 8 Pro, installed both directly, i.e. gem install foreman and by building edge foreman manually.

    It seems to actually run the application (a simple python webapp, in this case, but nothing written to stdout is actuall displayed, and it seems to fail silently on other occasions.

    Is this expected behavior? The README lists support for Windows, but it seems to be a non-blocking issue in this version of foreman/ruby.

    I do not believe the Procfile is actually the issue, as it works well on Linux. I made sure that there were not weird line endings, and my ruby path contains no spaces, etc which may trip up paths on Windows.

    Please let me know if there is anything I can do to help, sadly I am not very familiar with Ruby and nonblocking reading on Windows.

    C:\>foreman start
    Bad file descriptor
    C:/ruby193/lib/ruby/gems/1.9.1/gems/foreman-.62.0/lib/foreman/engine.rb:377:inread_nonblock
    C:/ruby193/lib/ruby/gems/1.9.1/gems/foreman-0.62.0/lib/foreman/engine.rb:377:inblock (2 levels) in watch_for_output
    C:/ruby193/lib/ruby/gems/1.9.1/gems/foreman-0.62.0/lib/foreman/engine.rb:373:inloop
    C:/ruby193/lib/ruby/gems/1.9.1/gems/foreman-0.62.0/lib/foreman/engine.rb:373:inblock in watch_for_output
    

    Procfile:

    web: python run.py
    
    opened by corydolphin 30
  • Monit support & cpu/memory process monitoring flags for export

    Monit support & cpu/memory process monitoring flags for export

    This pull request includes two things:

    • monit templates (running off start-stop-daemon)
    • additional CLI options for "export"
          [--alert-on-mem="alpha=150 MB,bar=250 MB" or "200 MB"]    
          [--restart-on-mem="alpha=200 MB,bar=300 MB" or "300 MB"]  
          [--alert-on-cpu="alpha=20%,bar=28%" or "22%"]             
          [--restart-on-cpu="alpha=25%,bar=30%" or "25%"]           
    

    These only do something for monit. I don't know what the equivalent changes are required for bluepill, etc.

    opened by drnic 26
  • Upstart export is no executing command with rbenv path of owned user

    Upstart export is no executing command with rbenv path of owned user

    Upgrading to latest version of foreman broke the generated upstart configuration files and upstart is reporting the following error now when trying to start the application server:

    /bin/sh: 1: exec: bundle: not found
    

    My Procfile:

    web: bundle exec puma -p $PORT
    

    My Environment:

    • vagrant VM
    • ubuntu 12.04
    • rbenv

    This regression introduced by commit c039f379ff1b6eb87673aa73a3548ba20d1722e4 as part of #438. Using setuid <%= user %> does not seem to inherit the proper user PATH required for rbenv to execute the target binary. The previous version used exec su - <%= user %> which properly inherited rbenv on the path.

    opened by wireframe 23
  • SIGTERM not forwarded to wrapped commands in foreman-runner

    SIGTERM not forwarded to wrapped commands in foreman-runner

    When there's a shell script in the Procfile, foreman runs it via foreman-runner, which creates an extra PID. When foreman sends SIGTERM upon Ctrl-C or an exited process, the signal is only sent to the wrapper, but not the shell script itself. This proves problematic for a simple shell script I wrote that starts an upstart script, then traps SIGTERM to stop the upstart script.

    opened by exchgr 22
  • Added support for ENV variable interpolation

    Added support for ENV variable interpolation

    Sometimes in a .env file you just want to do something like this:

    REDIS_PORT=7080
    REDIS_URL=redis://myhost.com:$REDIS_PORT
    PATH=/my/bins:$PATH
    

    This commit adds support for ENV variable interpolation while running the cli for Foreman.

    enhancement 
    opened by bradgessler 22
  • engine: make output Readline-friendly

    engine: make output Readline-friendly

    The motivation behind this commit is to make Foreman respect GNU Readline 1.

    As Foreman is often used with Pry (or at least many people want to), and Pry is dependent on Readline, using these tools together is very problematic 2,3.

    The problem is that when you start Pry by means of Foreman, Foreman supresses output from Pry, so you don't see what you type. The output can only be seen after pressing carriage return. Demonstration (a bit hard to follow, but you may want to try it yourself; clone the Pry repo and execute the same command):

    http://showterm.io/3eb716461d6602ac90b09

    Although this problem was reported by Pry users, any Readline application is affected. This commit uses IRB for tests, because it also depends on Readline, hence it suits for testing perfectly. Other Readline dependent applications that I tested were GHCi, the Lua REPL, Eshell (erlang shell).

    Previously, Pry was using a trick, which allowed us to bypass this problem 4. The fix was featured in Pry v0.9.12.6, but then it was removed by accident. It's been readded on HEAD recently (not released yet). However, the fix we currently have is still not perfect. Although you can see your input immediately, you can't see your output now :D Demo:

    http://showterm.io/f648de27568d96a02f1b3

    The fix breaks correct piping. Now, when you pipe Pry's output, it doesn't output Readline's prompt and user's input. What's being piped is only return values of executed expressions. Demo:

    http://showterm.io/3651389faf1fdc0d18211

    To fix the missing output and pipe everything, including the user's input, we need to set Readline.output correctly. However, if we do that, we break minimal support for Foreman. So when I fixed Pry 5, I figured it would be interesting to try to fix Foreman.

    Now, it's time to talk about the changes here. I'm not very familiar with Foreman, so take the code with a grain of salt. Basically, the whole point of the fix is to read one character at a time and print it immediately, instead of waiting for a newline character. This technique allows us to prepend so-called markers (timestamps, if you wish) to a Readline prompt and display the user's input. It works for all the Readline apps that I mentioned above and doesn't break piping (that is, tee).

    Note. I had to remove $stdout.flush from the output method, because it was causing thread deadlocks with the flush in #handle_io. The deadlock appears when you use Foreman with Pry, pipe the output and trigger SIGINT (control-c press). Example:

    % foreman start -f Procfile | tee log 15:50:05 pryhere.1 | started with pid 26881 15:50:28 pryhere.1 | 1 pry(main)> <CTRL+C><CTRL+D> 15:50:49 pryhere.1 | 2 pry(main)> foreman/engine.rb:323:in `synchronize': deadlock; recursive locking (ThreadError)

    This is probably because of the race condition, when on SIGINT Foreman prints stuff here 6, which flushes $stdout.

    opened by kyrylo 21
  • add logging back into upstart exports.

    add logging back into upstart exports.

    Looks like logging got removed from the last upstart export template. I added it back in, updated the specs, and checked it in real life.

    Was there a reason it was removed? Logging seems to be in the other templates still.

    Please let me know if you have any questions!

    opened by nearapogee 21
  • Migrate CI from Travis to GitHub Actions

    Migrate CI from Travis to GitHub Actions

    Since June 15th, 2021, the building on travis-ci.org is ceased. This PR migrates CI from Travis CI to GitHub Actions. Here are the details:

    • Add Ruby 2.7, 3.0, 3.1 and head to the CI matrix
    • Remove and ignore Gemfile.lock
      • Existence of Gemfile.lock prevents testing on multiple Ruby versions.
    • Update RubyGems to the latest
      • Using old RubyGems, the following warning is displayed and the CI fails.
      1) Foreman::CLI run can run a command
         Failure/Error: expect(forked_foreman("run echo 1")).to eq("1\n")
      
           expected: "1\n"
                got: "Your RubyGems version (2.7.6.3) has a bug that prevents `required_ruby_version` from working for Bun...yGems to avoid future breakage and silence this warning by running `gem update --system 3.2.3`\n1\n"
      
    • Use the latest fakefs
      • fakefs v0.10.x does not work with the latest Ruby.
    • Replace File.exists? with File.exist?
      • File.exists? is being removed in Ruby 3.2.
    • Pass a block instead of a lambda to Rspec's expect to suppress the following deprecation warning
      The implicit block expectation syntax is deprecated, you should pass a block rather than an argument to `expect` to use the provided block expectation matcher or the matcher must implement `supports_value_expectations?`. e.g  `expect { value }.to raise SystemExit` not `expect(value).to raise SystemExit`
      
    • Add GitHub token permissions for workflow
      • GitHub asks developers to define workflow permissions, see below for securing GitHub workflows against supply-chain attacks.
        • https://github.blog/changelog/2021-04-20-github-actions-control-permissions-for-github_token/
        • https://docs.github.com/en/actions/security-guides/automatic-token-authentication#modifying-the-permissions-for-the-github_token

    codeclimate-test-reporter has been deprecated and the following message displayed:

      Code Climate's codeclimate-test-reporter gem has been deprecated in favor of
      our language-agnostic unified test reporter. The new test reporter is faster,
      distributed as a static binary so dependency conflicts never occur, and
      supports parallelized CI builds & multi-language CI configurations.
    
      Please visit https://docs.codeclimate.com/v1.0/docs/configuring-test-coverage
      for help setting up your CI process with our new test reporter.
    

    I wanted to deal with this, but since I don't have the token of CodeClimate, I passed on it.

    opened by mishina2228 2
  • Port 5000 taken by Mac OSX

    Port 5000 taken by Mac OSX

    When starting Rails in using foreman like:

    Procfile

    web: rails server
    

    It defaults to taking port 5000. On newer osx versions this port is now taken by MAC OSX though, so it won't start (or in some cases do start but the requests go to the airport process): https://www.reddit.com/r/webdev/comments/qg8yt9/apple_took_over_port_5000_in_the_latest_macos/

    Of course you can fix this by specifying a -p but I guess the default should be available.

    opened by lvonk 1
  • Forman doesn't show errors and logs of Procfile commands

    Forman doesn't show errors and logs of Procfile commands

    My Procfile.https look like this: web: thin start --ssl --ssl-key-file server.key --ssl-cert-file server.crt --port 3000 redis: redis-server worker: bundle exec rake resque:work QUEUE='*' scheduler: bundle exec rake resque:scheduler guard: guard -P livereload and I just find out that running the first command - web using forman start -f Procfile.https doesn't show the errors of this command, but when I run this line alone in terminal, I can see the exact errors. Does foreman hide the errors, or maybe he doesn't even get those errors from his child commands

    opened by tzipisheinin 3
  • Run processes in new process groups, kill process group instead of process

    Run processes in new process groups, kill process group instead of process

    This is https://github.com/ddollar/foreman/pull/723 but rebased against master today. Credit to @davishmcclurg for suggesting those changes in the first place.

    Some processes are getting orphaned when running Foreman with JRuby. Creating a new pgroup allows them all to be killed together.

    I believe the issue is related to how JRuby handles Dir.chdir by creating a shell process: sh -c 'cd /chdir/target; ${command}'. That causes a second process to be created that won't get cleaned up by killing the parent.

    I think this change also addresses #779. It makes Foreman match what Honcho does, and Honcho does not exhibit the problem shown in #779.

    Close #779

    (Some additional background: There was an earlier PR #528 that did half of what this PR does, https://github.com/ddollar/foreman/issues/525 was closed after that was merged, but then the PR was reverted after a few days, could not find the reason for that).

    opened by dentarg 1
  • Foreman does not terminate child process

    Foreman does not terminate child process

    Same issue as https://github.com/ddollar/foreman/issues/628

    Procfile:

    worker: ruby test.rb
    

    test.rb

    pid = Process.spawn("sleep 100")
    Process.detach(pid)
    sleep
    

    Steps to repoduce:

    1. $ foreman start
    2. $ kill <foreman-pid>
    3. Spawned process is still running
    opened by baelter 1
Process manager for Procfile-based applications and tmux

Overmind Overmind is a process manager for Procfile-based applications and tmux. With Overmind, you can easily run several processes from your Procfil

Sergey Alexandrovich 1.9k Aug 5, 2022
This vitual os application consist of 3 mini applications embedded in it like weather app , text editor and calculator .

Virtual-Operating-System This vitual os application consist of 3 mini applications embedded in it like weather app , text editor and calculator . APPS

shiva sharma 0 Nov 11, 2021
A bytecode-based virtual machine to implement scripting/filtering support in your golang project.

eval-filter Implementation Scripting Facilities Types Built-In Functions Conditionals Loops Functions Case/Switch Use Cases Security Denial of service

Steve Kemp 84 Jul 23, 2022
Create virtual machines and run Linux-based operating systems in Go using Apple Virtualization.framework.

vz - Go binding with Apple Virtualization.framework vz provides the power of the Apple Virtualization.framework in Go.

Kei Kamikawa 180 Jul 29, 2022
Expr – a tiny stack-based virtual machine written in Go

Expr – a tiny stack-based virtual machine written in Go The executor is designed to interpret a simple expression language and it's useful in delegati

Anthony Regeda 25 Apr 10, 2022
An interpreter written in go for a brainfuck-based language called €*

eurostar-go-interpreter This is an interpreter written in go for a brainfuck-bas

null 8 May 22, 2022
Process manager for Procfile-based applications

Hivemind Hivemind is a process manager for Procfile-based applications. At the moment, it supports Linux, FreeBSD, and macOS. Procfile is a simple for

Sergey Alexandrovich 792 Jul 28, 2022
Process manager for Procfile-based applications and tmux

Overmind Overmind is a process manager for Procfile-based applications and tmux. With Overmind, you can easily run several processes from your Procfil

Sergey Alexandrovich 1.9k Aug 5, 2022
churro is a cloud-native Extract-Transform-Load (ETL) application designed to build, scale, and manage data pipeline applications.

Churro - ETL for Kubernetes churro is a cloud-native Extract-Transform-Load (ETL) application designed to build, scale, and manage data pipeline appli

churrodata 13 Mar 10, 2022
Deploy, manage, and secure applications and resources across multiple clusters using CloudFormation and Shipa

CloudFormation provider Deploy, secure, and manage applications across multiple clusters using CloudFormation and Shipa. Development environment setup

Shipa 1 Feb 12, 2022
SigNoz helps developer monitor applications and troubleshoot problems in their deployed applications

SigNoz helps developers monitor their applications & troubleshoot problems, an open-source alternative to DataDog, NewRelic, etc. ?? ??

SigNoz 7.3k Aug 2, 2022
Daemon based on liblxc offering a REST API to manage containers

LXD LXD is a next generation system container and virtual machine manager. It offers a unified user experience around full Linux systems running insid

LXC - Linux Containers 3.4k Jul 31, 2022
A microservice gateway developed based on golang.With a variety of plug-ins which can be expanded by itself, plug and play. what's more,it can quickly help enterprises manage API services and improve the stability and security of API services.

Goku API gateway is a microservice gateway developed based on golang. It can achieve the purposes of high-performance HTTP API forwarding, multi tenant management, API access control, etc. it has a powerful custom plug-in system, which can be expanded by itself, and can quickly help enterprises manage API services and improve the stability and security of API services.

Eolink 233 Aug 4, 2022
Geocache is an in-memory cache that is suitable for geolocation based applications.

geocache geocache is an in-memory cache that is suitable for geolocation based applications. It uses geolocation as a key for storing items. You can s

Melih Mucuk 138 May 28, 2022
Flamingo Framework and Core Library. Flamingo is a go based framework for pluggable web projects. It is used to build scalable and maintainable (web)applications.

Flamingo Framework Flamingo is a web framework based on Go. It is designed to build pluggable and maintainable web projects. It is production ready, f

Flamingo 305 Aug 4, 2022
Flamingo Framework and Core Library. Flamingo is a go based framework for pluggable web projects. It is used to build scalable and maintainable (web)applications.

Flamingo Framework Flamingo is a web framework based on Go. It is designed to build pluggable and maintainable web projects. It is production ready, f

Flamingo 306 Aug 4, 2022
Geocache is an in-memory cache that is suitable for geolocation based applications.

geocache geocache is an in-memory cache that is suitable for geolocation based applications. It uses geolocation as a key for storing items. You can s

Melih Mucuk 138 May 28, 2022
Teardown API for Commandline Based Applications

Building go build -ldflags "-s -w" -o ./build/api.exe ./ Get the latest XML from https://www.teardowngame.com/modding/api.xml Commands help list searc

Dan 4 Mar 1, 2022
Shfz - Scenario-based fuzzing test execution tool for web applications

shfz A scenario-based web application fuzzng tool that supports fuzz generation

null 59 Jul 23, 2022
🍍Jeff provides the simplest way to manage web sessions in Go.

jeff A tool for managing login sessions in Go. Motivation I was looking for a simple session management wrapper for Go and from what I could tell ther

Alan Braithwaite 240 Jul 25, 2022
Go helpers to manage environment variables

Envh This library is made up of two parts : Env object : it wraps your environments variables in an object and provides convenient helpers. Env tree o

Anthony HAMON 95 Apr 14, 2022
A CLI tool implemented by Golang to manage `CloudComb` resource

CloudComb CLI tool: comb Get Started comb is a CLI tool for manage resources in CloudComb base on cloudcomb-go-sdk. Support Mac, Linux and Windows. We

Bingo Huang 22 Jan 4, 2021
Manage your gists from the command-line.

Gister Manage your gists from the command-line. You can even manage your gists using your favorite editor. Demo Create a github access token https://h

Dutchcoders 58 Apr 8, 2022
Database wrapper that manage read write connections

rwdb Database wrapper that manage read write connections Install go get github.com/andizzle/rwdb Create connections package main import "github.com/

Andy Zhang 15 Aug 5, 2022
Create and manage Isolated Virtual Environments for Go

VenGO Create and manage Isolated Virtual Environments for Golang. Motivation Why a tool to generate and manage virtual environments in Go?. Well, some

Oscar Campos 123 Aug 2, 2022
Go net/http handler to transparently manage posted JSON

Go JSON handler FormJSON is a net/http handler implementing content negotiation for posted data in order to transparently expose posted JSON as if it

Olivier Poitrey 36 May 31, 2022
Manage your repository's TODOs, tickets and checklists as config in your codebase.

tickgit ??️ tickgit is a tool to help you manage latent work in a codebase. Use the tickgit command to view pending tasks, progress reports, completio

Augmentable 278 Jul 30, 2022
Jenkins CLI allows you manage your Jenkins as an easy way

Quick start 简体中文 Jenkins CLI Jenkins CLI allows you manage your Jenkins in an easy way. No matter if you're a plugin developer, administrator or just

Jenkins Chinese Community 328 Jul 19, 2022