Fixes #155 - IRB is not a module (TypeError) when starting zeus console. All credit to @haarts for this! #155 (comment)
* Rewrite the Makefile. This one is somewhat more idiomatic. * Generate version files with shellscripts, rather than rubyscripts. * Use gox to crosscompile. TODO: * Just generate the version files from the Makefile; no need for scripts. * Makefile dependency tracking still has issues.
Fix gem version lookup
It might happens gem name contains '-rake'. In this case scan by word boundary will find it. So if Gemfile.lock contails exception_notification-rake (~> 0.0.6) then rake version will be detected as 0.0.6
…r json version
Instead of passing the command arguments from the zeus client to the zeus master, and from there to the command process over their respective sockets, create a streaming socket in the zeus client, pass that socket over to the zeus master, have the zeus master pass it on to the command process, and read the zero-separated arguments directly in the command. This has a two advantages: One, it supports unbounded numbers of arguments on Linux and OS X (previous solutions only worked either on one or the other). Two, it extracts all command argument handling from the zeus master - all the master now does is pass a count and an FD from one pipe to another.
This reverts commit 1ed167e.
Extract command running from the `go` method. This ensures that the process running the command never tries to re-register with the client monitor on the Zeus side, which was what caused the "slave `boot` was killed" messages mentioned in #410. This was originally broken by the recursion elimination in #361 (turns out unrolling recursion is hard!). As a pleasant side effect, this change also eliminates two more lines in the `go` method from backtraces on commands.
Remove recursion in favor of iteration for lower backtrace depth
With the tests in the correct module we don't need to reassign the constant Runner, and make it look cleaner.
Change the structure of Zeus.go to use throw/catch and iteration instead of recursive calls to go in order to boot slaves and commands. This changes the number of backtrace frames occupied by Zeus to be constant, instead of scaling linear with the depth of the slave launching a command.
This reverts commit 5dfebe5.
…nstant_zeus_m_version Definition causes a already defines constant error
If the slave crashes on first boot, zeus master needs to know what files triggered that crash. Before, the master would just keep the node in "crashed" state without tracking changes on any of its features. Now, it waits for the slave to send the set of loaded files over `local` and adds those to tracked features. This fixes #321.
we run minitest tests directly so we need to make sure that minitest does not hook into exit by default. This should only happen when minitest/autorun is loaded but this seems to be the case for the rails default setup outside of the user controlled test_helper or minitest_helper
When running a test that has a name with any special characters in it (namely ? and other symbols important for regular expressions), the test runner fails to match because the symbols aren't escaped.
Defining the version in the spec_helper causes a already defined constant warning, and since it is not really needed I guess it can just be removed
Fixed broken tests and made minitest exit simpler.
Detect and preload dummy app
Require bundled rake version
By converting the `MiniTest::Unit.runner.run` return value to an integer, you don't have to perform any complex logic around the exit code because `nil.to_i == 0`. Also, because `exit` was never explicitly called, the tests were failing.
`require 'rake/testtask'` uses the latest rake version. Zeus fails to start if this version does not match the bundled rake version, i.e. the one specified in Gemfile.lock: > You have already activated rake 10.0.4, but your Gemfile requires rake 10.0.3. This fix explicitly requires the rake version as specified in Gemfile.lock.