capistrano-db-tasks 0.2 → 0.2.1
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.
data/README.markdown
CHANGED
@@ -2,6 +2,7 @@ CapistranoDbTasks
|
|
2
2
|
=================
|
3
3
|
|
4
4
|
Add database AND assets tasks to capistrano to a Rails project.
|
5
|
+
It only works with capistrano 2. Any pull requests for capistrano 3 support are welcome :)
|
5
6
|
|
6
7
|
Currently
|
7
8
|
|
@@ -40,6 +41,11 @@ Add to config/deploy.rb:
|
|
40
41
|
set :locals_rails_env, "production"
|
41
42
|
```
|
42
43
|
|
44
|
+
Add to .gitignore
|
45
|
+
```yml
|
46
|
+
/db/*.sql
|
47
|
+
```
|
48
|
+
|
43
49
|
Available tasks
|
44
50
|
===============
|
45
51
|
|
@@ -15,9 +15,10 @@ module Database
|
|
15
15
|
|
16
16
|
def credentials
|
17
17
|
if mysql?
|
18
|
-
|
18
|
+
username = @config['username'] || @config['user']
|
19
|
+
(username ? " -u #{username} " : '') + (@config['password'] ? " -p'#{@config['password']}' " : '') + (@config['host'] ? " -h #{@config['host']}" : '') + (@config['socket'] ? " -S#{@config['socket']}" : '')
|
19
20
|
elsif postgresql?
|
20
|
-
" -U #{@config['username']} " + (@config['host'] ? " -h #{@config['host']}" : '')
|
21
|
+
(@config['username'] ? " -U #{@config['username']} " : '') + (@config['host'] ? " -h #{@config['host']}" : '')
|
21
22
|
end
|
22
23
|
end
|
23
24
|
|
@@ -33,6 +34,9 @@ module Database
|
|
33
34
|
@output_file ||= "db/#{database}_#{current_time}.sql.bz2"
|
34
35
|
end
|
35
36
|
|
37
|
+
def pgpass
|
38
|
+
"PGPASSWORD='#{@config['password']}'" if @config['password']
|
39
|
+
end
|
36
40
|
|
37
41
|
private
|
38
42
|
|
@@ -40,7 +44,7 @@ module Database
|
|
40
44
|
if mysql?
|
41
45
|
"mysqldump #{credentials} #{database} --lock-tables=false"
|
42
46
|
elsif postgresql?
|
43
|
-
"pg_dump #{credentials} -c -O #{database}"
|
47
|
+
"#{pgpass} pg_dump #{credentials} -c -O #{database}"
|
44
48
|
end
|
45
49
|
end
|
46
50
|
|
@@ -48,7 +52,7 @@ module Database
|
|
48
52
|
if mysql?
|
49
53
|
"mysql #{credentials} -D #{database} < #{file}"
|
50
54
|
elsif postgresql?
|
51
|
-
"psql #{credentials} #{database} < #{file}"
|
55
|
+
"#{pgpass} psql #{credentials} #{database} < #{file}"
|
52
56
|
end
|
53
57
|
end
|
54
58
|
|
@@ -61,7 +65,7 @@ module Database
|
|
61
65
|
@cap.run("cat #{@cap.current_path}/config/database.yml") do |c, s, d|
|
62
66
|
@config += d
|
63
67
|
end
|
64
|
-
@config = YAML.load(@config)[@cap.rails_env]
|
68
|
+
@config = YAML.load(ERB.new(@config).result)[@cap.rails_env.to_s]
|
65
69
|
end
|
66
70
|
|
67
71
|
def dump
|
@@ -86,7 +90,7 @@ module Database
|
|
86
90
|
class Local < Base
|
87
91
|
def initialize(cap_instance)
|
88
92
|
super(cap_instance)
|
89
|
-
@config = YAML.
|
93
|
+
@config = YAML.load(ERB.new(File.read(File.join('config', 'database.yml'))).result)[@cap.local_rails_env.to_s]
|
90
94
|
puts "local #{@config}"
|
91
95
|
end
|
92
96
|
|
@@ -94,8 +98,15 @@ module Database
|
|
94
98
|
def load(file, cleanup)
|
95
99
|
unzip_file = File.join(File.dirname(file), File.basename(file, '.bz2'))
|
96
100
|
# system("bunzip2 -f #{file} && bundle exec rake db:drop db:create && #{import_cmd(unzip_file)} && bundle exec rake db:migrate")
|
101
|
+
@cap.logger.info("executing local: bunzip2 -f #{file} && #{import_cmd(unzip_file)}")
|
97
102
|
system("bunzip2 -f #{file} && #{import_cmd(unzip_file)}")
|
98
|
-
|
103
|
+
if cleanup
|
104
|
+
@cap.logger.info("removing #{unzip_file}")
|
105
|
+
File.unlink(unzip_file)
|
106
|
+
else
|
107
|
+
@cap.logger.info("leaving #{unzip_file} (specify :db_local_clean in deploy.rb to remove)")
|
108
|
+
end
|
109
|
+
@cap.logger.info("Completed database import")
|
99
110
|
end
|
100
111
|
|
101
112
|
def dump
|
@@ -8,7 +8,6 @@ if Capistrano::Configuration.instance(false)
|
|
8
8
|
|
9
9
|
instance.set :local_rails_env, ENV['RAILS_ENV'] || 'development' unless exists?(:local_rails_env)
|
10
10
|
instance.set :rails_env, 'production' unless exists?(:rails_env)
|
11
|
-
instance.set :stage, 'production' unless exists?(:stage)
|
12
11
|
instance.set :db_local_clean, false unless exists?(:db_local_clean)
|
13
12
|
instance.set :assets_dir, 'system' unless exists?(:assets_dir)
|
14
13
|
instance.set :local_assets_dir, 'public' unless exists?(:local_assets_dir)
|
@@ -112,4 +111,4 @@ if Capistrano::Configuration.instance(false)
|
|
112
111
|
end
|
113
112
|
end
|
114
113
|
|
115
|
-
end
|
114
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-db-tasks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2014-02-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: capistrano
|
@@ -59,12 +59,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
59
59
|
- - ! '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
|
+
segments:
|
63
|
+
- 0
|
64
|
+
hash: 22134957769426335
|
62
65
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
63
66
|
none: false
|
64
67
|
requirements:
|
65
68
|
- - ! '>='
|
66
69
|
- !ruby/object:Gem::Version
|
67
70
|
version: '0'
|
71
|
+
segments:
|
72
|
+
- 0
|
73
|
+
hash: 22134957769426335
|
68
74
|
requirements: []
|
69
75
|
rubyforge_project: capistrano-db-tasks
|
70
76
|
rubygems_version: 1.8.23
|