sumodev_deploy 0.2.8.1 → 0.3

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.
@@ -1,6 +1,9 @@
1
- configuration = Capistrano::Configuration.respond_to?(:instance) ? Capistrano::Configuration.instance(:must_exist) : Capistrano.configuration(:must_exist)
1
+ Capistrano::Configuration.instance.load do
2
+ require 'sumodev_deploy/tasks/db'
3
+ require 'sumodev_deploy/tasks/errbit'
4
+ require 'sumodev_deploy/tasks/files'
5
+ require 'sumodev_deploy/tasks/redirect'
2
6
 
3
- configuration.load do
4
7
  def _cset(name, *args, &block)
5
8
  unless exists?(name)
6
9
  set(name, *args, &block)
@@ -25,6 +28,7 @@ configuration.load do
25
28
  _cset(:app_servers) { production_server || staging_server }
26
29
  _cset(:web_servers) { production_server || staging_server }
27
30
  _cset(:db_server) { production_server || staging_server }
31
+ _cset(:db_lockfile) { "#{shared_path}/db.lock" }
28
32
 
29
33
  _cset(:user, 'sites')
30
34
  _cset(:homedir) { "/home/#{user}/" }
@@ -43,182 +47,6 @@ configuration.load do
43
47
  after 'deploy', 'deploy:cleanup', 'sumodev:errbit:after_deploy'
44
48
 
45
49
  namespace :sumodev do
46
- namespace :db do
47
- def remote_db_name
48
- production? && !fetch(:production_db, '').empty? ?
49
- production_db :
50
- db_name
51
- end
52
-
53
- def remote_db_options
54
- {:db_host => 'host', :db_username => 'user', :db_password => 'password'}.inject('') do |options, (key, param)|
55
- value = fetch(key, '')
56
- options << "--#{param}=#{value} " unless value.empty?
57
- options
58
- end
59
- end
60
-
61
- desc "Create the database. Reads :db_name variable, or it is composed from client / project"
62
- task :create, :roles => :db do
63
- run "create_db #{db_name}"
64
- end
65
-
66
- desc "Dump the remote database, and outputs the content so you can pipe it"
67
- task :dump, :roles => :db do
68
- run "mysqldump --set-charset #{db_name}" do |ch, stream, out|
69
- if stream == :err
70
- ch[:options][:logger].send(:important, out, "#{stream} :: #{ch[:server]}" )
71
- else
72
- print out
73
- end
74
- end
75
- end
76
-
77
- desc "Imports the database from the server into your local database"
78
- task :get, :roles => :db do
79
- run_locally %{mysqladmin create #{db_name}} rescue nil
80
-
81
- mysql = IO.popen("mysql #{db_name}", 'r+')
82
- run "mysqldump --set-charset #{remote_db_options} #{remote_db_name}" do |ch, stream, out|
83
- if stream == :err
84
- ch[:options][:logger].send(:important, out, "#{stream} :: #{ch[:server]}" )
85
- else
86
- mysql.write out
87
- end
88
- end
89
- mysql.close_write
90
- puts mysql.read
91
- mysql.close
92
- end
93
-
94
- desc "Get database info"
95
- task :info, :roles => :db do
96
- run "info_db #{db_name}"
97
- end
98
-
99
- desc "Imports the database from your local server to the remote one"
100
- task :put, :roles => :db, :only => {:primary => true} do
101
- run "mysqldump --set-charset #{db_name} > #{current_path}/#{release_name}.sql" rescue nil
102
-
103
- dump = StringIO.new(run_locally "mysqldump --set-charset #{db_name}")
104
- dump_path = "#{shared_path}/db_upload.tmp.sql"
105
- upload dump, dump_path
106
-
107
- run %{
108
- mysql #{remote_db_options} #{remote_db_name} < #{dump_path} &&
109
- rm #{dump_path}
110
- }
111
- end
112
- end
113
-
114
- namespace :errbit do
115
- task :after_deploy, :rolse => :app do
116
- update_api_key
117
- notify
118
- end
119
- desc "Updates the Errbit API key"
120
- task :update_api_key, :roles => :app do
121
- next if fetch(:production_errbit_api_key, "").empty?
122
- run "if [ -f #{shared_path}/config/library/globals.php ]; then sed -i \"s/define('ERRBIT_API_KEY', '.*');/define('ERRBIT_API_KEY', '#{production_errbit_api_key}');/\" #{shared_path}/config/library/globals.php; fi"
123
- end
124
- desc "Notify Errbit about a dqeploy"
125
- task :notify, :roles => :app do
126
- next if fetch(:production_errbit_api_key, "").empty?
127
- require 'active_support/core_ext/object'
128
-
129
- parameters = {
130
- :api_key => production_errbit_api_key,
131
- :deploy => {
132
- :rails_env => stage,
133
- :local_username => ENV["USER"],
134
- :scm_repository => repository,
135
- :scm_revision => current_revision
136
- }
137
- }
138
- run_locally "curl -d '#{parameters.to_query}' https://errors.sumocoders.be/deploys.txt"
139
- end
140
- end
141
-
142
- namespace :files do
143
- def find_folder_in_parents(folder)
144
- require 'pathname'
145
-
146
- path = Pathname.pwd
147
- begin
148
- found = Pathname.glob(path + folder)
149
- return found.first if found.any?
150
-
151
- path = path.parent
152
- end until path.root?
153
- end
154
-
155
- def rsync(direction, from, to, options = {})
156
- servers = find_servers_for_task(current_task)
157
- servers = [servers.first] if options[:once]
158
-
159
- servers.each do |server|
160
- host_definition = "#{server.user || user}@#{server.host}"
161
- host_definition << ":#{server.port}" if server.port && server.port != 22
162
-
163
- case direction
164
- when :down
165
- run_locally "rsync -rtlpv #{host_definition}:#{from} #{to}"
166
- when :up
167
- run_locally "rsync -rtlp #{from} #{host_definition}:#{to}"
168
- end
169
- end
170
- end
171
-
172
- desc "Sync all remote files to your local install"
173
- task :get, :roles => :app do
174
- path = find_folder_in_parents('frontend/files')
175
- if !path
176
- abort "No frontend/files folder found in this or upper folders. Are you sure you're in a Fork project?"
177
- else
178
- rsync :down, shared_files_path, path, :once => true
179
- end
180
- end
181
-
182
- desc "Sync your local files to the remote server"
183
- task :put, :roles => :app do
184
- # create a backup on the remote, store it under the release-folder, so it will be automagically removed
185
- run %{cd #{shared_path} && tar -czf #{current_path}/backup_files.tgz files}
186
-
187
- # check if folder exists
188
- path = find_folder_in_parents('frontend/files')
189
- if !path
190
- abort "No frontend/files folder found in this or upper folders. Are you sure you're in a Fork project?"
191
- else
192
- rsync :up, "#{path}/", shared_files_path
193
- end
194
- end
195
- end
196
-
197
- namespace :redirect do
198
- desc "Installs the redirect page for the site"
199
- task :put, :roles => :app do
200
- unless exists?(:production_url)
201
- fetch(:production_url) do
202
- Capistrano::CLI.ui.ask "What is the production url?"
203
- end
204
- end
205
-
206
- run %{
207
- mkdir -p #{shared_path}/redirect &&
208
- wget --quiet -O #{shared_path}/redirect/index.php http://static.sumocoders.be/redirect/index.phps &&
209
- wget --quiet -O #{shared_path}/redirect/.htaccess http://static.sumocoders.be/redirect/htaccess
210
- }
211
-
212
- # change the url
213
- run "if [ -f #{shared_path}/redirect/index.php ]; then sed -i 's|<real-url>|#{production_url}|' #{shared_path}/redirect/index.php; fi"
214
-
215
- run %{
216
- rm -f #{current_path} &&
217
- ln -s #{shared_path}/redirect #{current_path}
218
- }
219
- end
220
- end
221
-
222
50
  namespace :setup do
223
51
  desc "Create the client folder if it doesn't exist yet"
224
52
  task :client_folder do
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "sumodev_deploy"
5
- s.version = "0.2.8.1"
5
+ s.version = "0.3"
6
6
 
7
7
  s.authors = ["Jan De Poorter"]
8
8
  s.date = "2012-04-18"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sumodev_deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.8.1
4
+ version: '0.3'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: