Oye

A continuous monitoring tool that does a few things:

1. listens for changes in bare git repos
2. updates cloned repos when the corresponding bare repo changes
3. restarts the rails app with the new code

[ ] use multithreaading. each thread should watch a unique repo. [ ] run rails tests inside Oye.monitor [ ] check for irregularities in @repos, e.g two repeated cloned repos [ ] give warning if port is not open by using port_open? method

  • fix possible port conflicts. for example oye -p 3000 will add that port to the list of ports (or sockets) already specified in the app's config file (unicorn.rb). but you print an error if there are port conflicts [ ] why is the trap with FileUtils.rm_f(oye_pidfile) not removing the PID file [ ] make a website for 'oye' where you provide better documentation. e.g.
  • how to set up oye.yml [ ] create a git brach called 'oye' and pull from that one instead of 'origin'. [ ] suport remote branches via 'ssh'. e.g. you can use Net::SSH as i use in '~/.ruby/req' [ ] support for webrick app server [ ] support for apps that dont use an app server (e.g. oye.dance and sergioro.mx run in nginx alone) [ ] support 'jekyll serve' for people that dont want to use a web server for jekyll [ ] split the file. use Oye::Actions as a namespace for update, restart, start, stop methods [ ] read environment for each app from oye.yml. e.g. user cn specify 'production' for one app and 'development' for another. The '-e' option is the default environment to be used if none is specified in oye.yml [ ] change %x() to system() to prevent undesired prints to console (e.g. if you stop 'oye' while it is running '%x(bundler)' it will dump bundler errors to the console.) [ ] give specific help for each command like jekyl does jekyll [cmd] -h
  • e.g. with oye port -h [ ] there might be a hard-to-find-bug if oye is executing a git pull while the origin repo is receiving data from a git push. [ ] in 'oye.yml' you could pass an aditional parameter to specify what type of app it is. in this way you dont need to use is_rails?. e.g. /git/pete.land.git:
    • /var/www/html/pete.land: type: jekyll