dumptruck 0.1.2 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 53f9e06243949b735c0cbee908cf0608ef41d191
4
- data.tar.gz: 67dcfa5cc690aeea22c4eb8a9056376fb94e50b9
3
+ metadata.gz: eb4fec54c12368bee28a53a524a7b2025b7c0638
4
+ data.tar.gz: 3e7f8675276a5b7b76afdee9a91386d7135dea1c
5
5
  SHA512:
6
- metadata.gz: e4beac2750e5638b4044c161dd4adab1a6d64e1e636410767cdc8a67d786607b0b102ef33712ba6dfb0b4449090d6cd3ed370692dbf4f89c23c7fa953a412fc8
7
- data.tar.gz: ade146bdf3cd952276cc831e2c7b8dde59cd01beda7748e790cdaeaae62276fbd3db59310f23b9eb6c04ca31c83ebad1ff131aff20df17602ca561a19e916e99
6
+ metadata.gz: 14f9af784da8e192a9f675e3f16f1db4e0ec10a9c97b10139336040f40620702de98d0be6dceef9da05d1ed802b88fb98943e9244c7839d7c59f6fee6819adcd
7
+ data.tar.gz: 6fa25af7048e332ce70bf660aece7a9e94d9398a749a3097a78bd1b7c4112ce65c379232d79c2a190e62bf0635ecd35c80a31efaabecc2f4f2b9bdd1a63c601a
data/README.md CHANGED
@@ -1,7 +1,8 @@
1
- Dumptruck
1
+ DumpTruck
2
2
  =========
3
- [![Build Status](https://travis-ci.org/delianides/Dumptruck.svg?branch=master)](https://travis-ci.org/delianides/Dumptruck)
4
- [![Coverage Status](https://coveralls.io/repos/delianides/Dumptruck/badge.png?branch=master)](https://coveralls.io/r/delianides/Dumptruck?branch=master)
3
+ [![Gem Version](http://img.shields.io/gem/v/dumptruck.svg)](https://rubygems.org/gems/dumptruck)
4
+ [![Build Status](https://travis-ci.org/delianides/dumptruck.svg?branch=master)](https://travis-ci.org/delianides/dumptruck)
5
+ [![Coverage Status](https://coveralls.io/repos/delianides/dumptruck/badge.png?branch=master)](https://coveralls.io/r/delianides/dumptruck?branch=master)
5
6
 
6
7
  Ruby wrapper for the mysqldump executable
7
8
 
@@ -20,8 +21,6 @@ or install the gem manually
20
21
 
21
22
  gem install dumptruck
22
23
 
23
- **Note:** The gem hasn't been submitted to Rubygems yet.
24
-
25
24
  Usage
26
25
  -----
27
26
 
data/dumptruck.gemspec CHANGED
@@ -21,11 +21,12 @@ Gem::Specification.new do |spec|
21
21
  spec.required_ruby_version = '>= 1.9.3'
22
22
 
23
23
  spec.add_development_dependency "bundler", "~> 1.5"
24
+ spec.add_development_dependency "cocaine", "~> 0.5.4"
24
25
  spec.add_development_dependency "rake", "~> 0"
25
- spec.add_development_dependency "rspec", "~> 0"
26
- spec.add_development_dependency "rspec-nc", "~> 0"
27
- spec.add_development_dependency "guard", "~> 0"
28
- spec.add_development_dependency "guard-rspec", "~> 0"
29
- spec.add_development_dependency "pry", "~> 0"
26
+ spec.add_development_dependency "rspec", "~> 2.14"
27
+ spec.add_development_dependency "guard", "~> 2.6"
28
+ spec.add_development_dependency "guard-rspec", "~> 4.2"
29
+ spec.add_development_dependency "pry", "~> 0.9.12"
30
30
  spec.add_development_dependency "coveralls", "~> 0"
31
+ spec.add_development_dependency "mocha"
31
32
  end
data/lib/dumptruck.rb CHANGED
@@ -1,3 +1,4 @@
1
1
  require "dumptruck/version"
2
2
  require "dumptruck/truck"
3
3
  require "dumptruck/load"
4
+ require "dumptruck/exceptions"
@@ -0,0 +1,5 @@
1
+ module Dumptruck
2
+ class DumpError < StandardError; end
3
+ class MysqlDumpNotFound < DumpError; end
4
+ class NothingLoaded < DumpError; end
5
+ end
@@ -1,9 +1,11 @@
1
1
  require "benchmark"
2
+ require "cocaine"
2
3
 
3
4
  module Dumptruck
4
5
  class Truck
6
+
5
7
  #mysqldump needs to be installed locally, you can pass in the location if Ruby doesn't find it
6
- attr_accessor :mysqldump_cmd
8
+ attr_accessor :mysqldump_bin
7
9
 
8
10
  #host, hostname where you are connecting too, defaults too localhost
9
11
  attr_accessor :host
@@ -37,7 +39,8 @@ module Dumptruck
37
39
  @port = defaults[:port]
38
40
  @filename = defaults[:filename]
39
41
  @output_dir = defaults[:output_dir]
40
- @mysqldump_cmd = find_mysqldump_cmd(params[:mysqldump_cmd])
42
+
43
+ Cocaine::CommandLine.path = params[:mysqldump_bin]
41
44
  end
42
45
 
43
46
  def credentials
@@ -68,48 +71,39 @@ module Dumptruck
68
71
  @loads.map
69
72
  end
70
73
 
71
- def dump
72
- time = Benchmark.realtime do
73
- filename = self.output
74
- @loads.each_with_index do |l,i|
75
- #[REFACTOR]
76
- if i == 0
77
- gzip = "gzip -c >"
78
- else
79
- gzip = "gzip -c >>"
80
- end
74
+ def gzip
75
+ "| gzip -c >>"
76
+ end
81
77
 
82
- cmd = "#{self.mysqldump_cmd} "
83
- cmd += "#{self.credentials} "
84
- cmd += "#{l.options} "
85
- cmd += "#{l.ignore_tables} " unless @ignore_tables.nil?
86
- cmd += "#{l.database} "
87
- cmd += "| #{gzip} #{filename}"
88
- begin
89
- system(cmd)
90
- rescue SystemCallError
91
- raise "Error Running Dump!"
92
- end
93
- end
78
+ def command
79
+ self.loads.each_with_index do |l,i|
80
+ mysqldump = Cocaine::CommandLine.new('mysqldump',
81
+ "#{self.credentials} #{l.options} #{l.ignored_tables}#{l.database}"
82
+ )
83
+ mysqldump.command
94
84
  end
95
-
96
- {time: time, file: "#{File.expand_path(filename)}"}
97
85
  end
98
86
 
99
- private
87
+ def dump(run = true)
88
+ raise Dumptruck::NothingLoaded, "You haven't loaded anything!" unless @loads
89
+ filename = self.output
100
90
 
101
- def find_mysqldump_cmd(cmd = nil)
102
- begin
103
- if(cmd)
104
- if(`#{cmd} -V`)
105
- cmd
91
+ time = Benchmark.realtime do
92
+ self.loads.each_with_index do |l,i|
93
+ cmd = Cocaine::CommandLine.new("mysqldump",
94
+ "#{self.credentials} #{l.options} #{l.ignored_tables}#{l.database} #{self.gzip} #{filename}"
95
+ )
96
+
97
+ begin
98
+ cmd.run
99
+ rescue Cocaine::ExitStatusError => e
100
+ e
101
+ rescue Cocaine::CommandNotFoundError => e
102
+ raise Dumptruck::MysqlDumpNotFound, "Could not find the `mysqldump` command."
106
103
  end
107
- else
108
- `which mysqldump`.strip
109
104
  end
110
- rescue SystemCallError
111
- raise "Mysqldump is not found!"
112
105
  end
106
+ {time: time, file: "#{File.expand_path(filename)}"}
113
107
  end
114
108
  end
115
109
  end
@@ -1,3 +1,3 @@
1
1
  module Dumptruck
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.4"
3
3
  end
data/spec/spec_helper.rb CHANGED
@@ -2,3 +2,8 @@ require 'coveralls'
2
2
  Coveralls.wear!
3
3
  require 'pry'
4
4
  require 'dumptruck'
5
+ require 'mocha/api'
6
+
7
+ RSpec.configure do |config|
8
+ config.mock_with :mocha
9
+ end
data/spec/truck_spec.rb CHANGED
@@ -2,19 +2,17 @@ require 'spec_helper'
2
2
 
3
3
  describe Dumptruck::Truck do
4
4
  describe '.new' do
5
- cmd = `which mysqldump`.strip
6
-
7
5
  let(:dump) { Dumptruck::Truck.new({
8
- :username => "drew",
9
- :password => "pw",
6
+ :username => "root",
7
+ :password => "d33ps0uth@local",
10
8
  })}
11
9
 
12
10
  it 'has a username' do
13
- expect(dump.username).to eq("drew")
11
+ expect(dump.username).to eq("root")
14
12
  end
15
13
 
16
14
  it 'has a password' do
17
- expect(dump.password).to eq("pw")
15
+ expect(dump.password).not_to eq(nil)
18
16
  end
19
17
 
20
18
  it 'has an output directory' do
@@ -25,21 +23,32 @@ describe Dumptruck::Truck do
25
23
  expect(dump.filename).not_to eq(nil)
26
24
  end
27
25
 
28
- it 'has a mysqldump executable' do
29
- expect(dump.mysqldump_cmd).to eq(cmd)
30
- dump.mysqldump_cmd = "/usr/local/bin/mysqldump"
31
- expect(dump.mysqldump_cmd).not_to be(nil)
26
+ it 'raises error if no loads are added to dump' do
27
+ Cocaine::CommandLine.path = nil
28
+ begin
29
+ dump.dump
30
+ rescue Dumptruck::NothingLoaded => e
31
+ expect(e.message).to eq "You haven't loaded anything!"
32
+ end
32
33
  end
33
34
 
34
- it "no mysqldump raises error" do
35
- expect{
36
- Dumptruck::Truck.new(
37
- {:mysqldump_cmd => "/fake/loc/mysqldump"})
38
- }.to raise_error("Mysqldump is not found!")
35
+ it 'no mysqldump raises error' do
36
+ Cocaine::CommandLine.path = nil
37
+ dump.load({ database: 'test' })
38
+ begin
39
+ dump.dump
40
+ rescue Dumptruck::MysqlDumpNotFound => e
41
+ expect(e.message).to eq "Could not find the `mysqldump` command."
42
+ end
39
43
  end
40
44
 
41
45
  it "creates a Load object" do
42
46
  dump.load({database: "test"})
43
47
  end
48
+
49
+ it 'generates the mysqldump command' do
50
+ dump.load({database: "test"})
51
+ expect(dump.command).to eq(["mysqldump -u #{dump.username} --password=#{dump.password} -h localhost -P 3306 --single-transaction --quick test"])
52
+ end
44
53
  end
45
54
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dumptruck
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - delianides
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-30 00:00:00.000000000 Z
11
+ date: 2014-05-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -25,21 +25,21 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.5'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: cocaine
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 0.5.4
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 0.5.4
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
@@ -53,61 +53,61 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rspec-nc
56
+ name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: '2.14'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: '2.14'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: guard
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: '2.6'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: '2.6'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: guard-rspec
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: '4.2'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: '4.2'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: pry
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '0'
103
+ version: 0.9.12
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '0'
110
+ version: 0.9.12
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: coveralls
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +122,20 @@ dependencies:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: mocha
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
125
139
  description: Wraps the mysqldump command into a ruby library
126
140
  email:
127
141
  - drew@delianides.com
@@ -139,6 +153,7 @@ files:
139
153
  - Rakefile
140
154
  - dumptruck.gemspec
141
155
  - lib/dumptruck.rb
156
+ - lib/dumptruck/exceptions.rb
142
157
  - lib/dumptruck/load.rb
143
158
  - lib/dumptruck/truck.rb
144
159
  - lib/dumptruck/version.rb