Re-pathed the requires to prefix with "rubyrep" as per gem standards.
Rescue errors when flushing stderr in progress bar to avoid "broken pipe" error aborting the replication synchronization.
Added output of dots and dashes for replication feedback if replication_trace = true is provided in the configuration.
Added memoization of column definitions for query optimization.
Added prepare_replication command to allow initializing for replication without actually starting the replication itself.
Added rr_sync_state table during replication/initial sync to keep track of synced tables, so that if we are interrupted during the sync we can recover.
Added uninstall_tables command to support destroying, locally uninstalling and resetting replication for specific tables.
Changed shutdown of rubyrep to immediately detect termination request and to stop processing existing change set as opposed to waiting to complete the existing change set before shutting down. Changed LoggedChangeLoader#update loop to break out of loop if shutdown detected.
Added :mode (:master or :slave) option to config of left/right DBs and honored value for creation of replication triggers (:slave means don't create triggers).
Added check for :slave mode when looking for differences during replication.
Added check for :slave mode when updating differences during replication.
Optimized synchronization by eliminating reads on slave database.
Removed creation of *_running_flags tables when in master/slave mode since we can't have multiple updaters as we would in master/master mode. Removed check for trigger switcher when in master/slave mode.
Changed internal loader updates (reading rr_rending_changes) to occur only after completing processing of current set of changes as opposed to updating after each individual change. Changed LoggedChangeLoaders#update and LoggedChangeLoader#update to return true or false if an update was found.
Fixed issue where LoggedChangeLoader#update was not honoring anything as a memory limit, but only :row_buffer_size as a cursor limit, by adding :mem_buffer_size configuration option to control the number of rows that are read into memory at once.
Added support for defining conditions for use in triggers and synchronization selects. - This can be used in place of before_replication and before_sync filters which filter after a change is triggered or, in the case of sync, after a row is read which is less performant.
Duplicated the two_way_replicator and two_way_syncer as a base for a one_way_replicator and one_way_replicator, respectively.
Created new one way replicator and syncer to support master/slave replication in one direction.
Removed retry on error logic since we are now doing a block of changes instead of all changes.
Debugging db-connection