Module: Etaps

Defined in:
lib/etaps.rb,
lib/etaps/version.rb

Constant Summary collapse

VERSION =
"0.0.3"

Class Method Summary collapse

Class Method Details

.build_mysql2_url(conf) ⇒ Object



62
63
64
# File 'lib/etaps.rb', line 62

def self.build_mysql2_url(conf)
  build_mysql_url(conf)
end

.build_mysql_url(conf) ⇒ Object



58
59
60
# File 'lib/etaps.rb', line 58

def self.build_mysql_url(conf)
  "mysql://#{conf['username']}:#{conf['password']}@#{conf['host']}/#{conf['database']}"
end

.build_sqlite3_url(conf) ⇒ Object



54
55
56
# File 'lib/etaps.rb', line 54

def self.build_sqlite3_url(conf)
  build_sqlite_url(conf)
end

.build_sqlite_url(conf) ⇒ Object



50
51
52
# File 'lib/etaps.rb', line 50

def self.build_sqlite_url(conf)
  "sqlite://#{File.expand_path(conf['database'])}"
end

.build_url(conf) ⇒ Object



45
46
47
48
# File 'lib/etaps.rb', line 45

def self.build_url(conf)
  type = conf['adapter']
  __send__("build_#{type}_url", conf)
end

.run(source = nil) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/etaps.rb', line 5

def self.run(source=nil)
  source ||= 'production'

  unless File.file?('config/database.yml')
   $stderr.puts "No config/database.yml found!"
   exit 1
  end

  require 'etc'
  require 'erb'
  require 'yaml'
  require 'childprocess'

  config = YAML.load(ERB.new(File.read('config/database.yml')).result)
  source = build_url(config[source])
  target = build_url(config['development'])

  server = ChildProcess.build("taps", "server", source, "a", "b")
  server.io.inherit!
  server.io.stdout = File.open('/dev/null', 'w')
  server.io.stderr = File.open('/dev/null', 'w')
  server.start

  sleep 10

  unless server.alive?
    exit 1
  end

  client = ChildProcess.build("taps", "pull", target, "http://a:b@localhost:5000")
  client.io.inherit!
  client.start
  client.wait

ensure
  client.stop rescue nil
  server.stop rescue nil
end