dumptruck 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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