# sync a directory to guarantee it's on disk. have to recurse to the root
# to guarantee sync for newly created directories.
def fdirsync(d)
- while d != "/"
+ while d != "/" && d != "."
fsync(d)
d = File.dirname(d)
end
class Replicator
def initialize(config)
@config = YAML.safe_load(File.read(config))
- @state = YAML.safe_load(File.read(@config["state_file"]), :permitted_classes => [Time])
+ @state = YAML.safe_load(File.read(@config["state_file"]), :permitted_classes => [Time], :fallback => {})
@conn = PG::Connection.connect(@config["db"])
# get current time from the database rather than the current system
@now = @conn.exec("select now() as now").map { |row| Time.parse(row["now"]) }[0]