visfleet-deprec 2.1.4 → 2.1.4.1

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,5 +1,11 @@
1
1
  # deprec changelog
2
2
 
3
+ = 2.1.4.1 (Sep 16, 2009)
4
+
5
+ * Now a Visfleet version
6
+ * Added 'maintenance' support
7
+ * More suitable postgress configs
8
+
3
9
  = 2.1.4 (Sep 16, 2009)
4
10
 
5
11
  * rubygems-1.3.5
data/TODO ADDED
@@ -0,0 +1,2 @@
1
+ * Stop the interactive prompting for apache vhost configs.
2
+ * Only add gem sources once (grep to see if installed?)
@@ -83,14 +83,20 @@ Capistrano::Configuration.instance(:must_exist).load do
83
83
  end
84
84
 
85
85
  task :install_deps do
86
- apt.install( {:base => %w(libmysqlclient15-dev sqlite3 libsqlite3-ruby libsqlite3-dev libpq-dev)}, :stable )
86
+ apps = case db_server_type
87
+ when :mysql then 'libmysqlclient15-dev'
88
+ when :postgresql then 'libpq-dev'
89
+ when :sqlite then 'sqlite3 libsqlite3-ruby libsqlite3-dev'
90
+ else 'libmysqlclient15-dev sqlite3 libsqlite3-ruby libsqlite3-dev libpq-dev'
91
+ end
92
+ apt.install( {:base => apps}, :stable )
87
93
  end
88
94
 
89
95
  # install some required ruby gems
90
96
  task :install_gems do
91
- gem2.install 'sqlite3-ruby'
92
- gem2.install 'mysql'
93
- gem2.install 'ruby-pg'
97
+ gem2.install 'sqlite3-ruby' if db_server_type == :sqlite
98
+ gem2.install 'mysql' if db_server_type == :mysql
99
+ gem2.install 'ruby-pg' if db_server_type == :postgresql
94
100
  gem2.install 'rails'
95
101
  gem2.install 'rake'
96
102
  gem2.install 'rspec'
@@ -0,0 +1,337 @@
1
+ # Copyright 2006-2008 by Mike Bailey. All rights reserved.
2
+ Capistrano::Configuration.instance(:must_exist).load do
3
+
4
+ set :app_user_prefix, 'app_'
5
+ set(:app_user) { app_user_prefix + application }
6
+ set :app_group_prefix, 'app_'
7
+ set(:app_group) { app_group_prefix + application }
8
+ set(:app_user_homedir) { deploy_to }
9
+ set :database_yml_in_scm, true
10
+ set :app_symlinks, nil
11
+ set :rails_env, 'production'
12
+ set :gems_for_project, nil # Array of gems to be installed for app
13
+ set :packages_for_project, nil # Array of packages to be installed for app
14
+ set :shared_dirs, nil # Array of directories that should be created under shared/
15
+ # and linked to in the project
16
+
17
+ # Hook into the default capistrano deploy tasks
18
+ before 'deploy:setup', :except => { :no_release => true } do
19
+ top.deprec.rails.setup_user_perms
20
+ top.deprec.rails.create_app_user_and_group
21
+ top.deprec.rails.setup_paths
22
+ top.deprec.rails.setup_shared_dirs
23
+ top.deprec.rails.install_packages_for_project
24
+ top.deprec.rails.install_gem_sources_for_project
25
+ top.deprec.rails.install_gems_for_project
26
+ end
27
+
28
+ after 'deploy:setup', :except => { :no_release => true } do
29
+ top.deprec.rails.create_config_dir
30
+ top.deprec.rails.config_gen
31
+ top.deprec.rails.config
32
+ top.deprec.rails.activate_services
33
+ top.deprec.rails.set_perms_on_shared_and_releases
34
+ top.deprec.web.reload
35
+ top.deprec.rails.setup_database
36
+ end
37
+
38
+ after 'deploy:symlink', :roles => :app do
39
+ top.deprec.rails.symlink_shared_dirs
40
+ top.deprec.rails.symlink_database_yml unless database_yml_in_scm
41
+ top.deprec.rails.make_writable_by_app
42
+ top.deprec.passenger.set_owner_of_environment_rb if app_server_type.to_s == 'passenger'
43
+ end
44
+
45
+ after :deploy, "deploy:cleanup"
46
+
47
+ namespace :rake do
48
+ namespace :gems do
49
+ task :install, :roles => :app do
50
+ run "cd #{current_path} && #{sudo} rake gems:install"
51
+ end
52
+ end
53
+ end
54
+ namespace :db do
55
+ task :migrate, :roles => :db do
56
+ run "cd #{current_path} && #{sudo} rake gems:install"
57
+ end
58
+ end
59
+
60
+ namespace :deprec do
61
+ namespace :rails do
62
+
63
+ #
64
+ # If database.yml is not kept in scm and it is present in local
65
+ # config dir then push it out to server.
66
+ #
67
+ before 'deprec:rails:symlink_database_yml', :roles => :app do
68
+ push_database_yml unless database_yml_in_scm
69
+ end
70
+
71
+ task :setup_database, :roles => :db do
72
+ if ! roles[:db].servers.empty? # Some apps don't use database!
73
+ deprec2.read_database_yml
74
+ top.deprec.db.create_user
75
+ top.deprec.db.create_database
76
+ top.deprec.db.grant_user_access_to_database
77
+ end
78
+ end
79
+
80
+ task :install, :roles => :app do
81
+ install_deps
82
+ install_gems
83
+ end
84
+
85
+ task :install_deps do
86
+ apt.install( {:base => %w(libmysqlclient15-dev sqlite3 libsqlite3-ruby libsqlite3-dev libpq-dev)}, :stable )
87
+ end
88
+
89
+ # install some required ruby gems
90
+ task :install_gems do
91
+ gem2.install 'sqlite3-ruby'
92
+ gem2.install 'mysql'
93
+ gem2.install 'ruby-pg'
94
+ gem2.install 'rails'
95
+ gem2.install 'rake'
96
+ gem2.install 'rspec'
97
+ end
98
+
99
+ desc <<-DESC
100
+ Install full rails stack on a stock standard ubuntu server (7.10, 8.04)
101
+ DESC
102
+ task :install_stack do
103
+
104
+ top.deprec.ruby.install
105
+ top.deprec.rails.install
106
+ top.deprec.svn.install
107
+ top.deprec.git.install
108
+ top.deprec.web.install # Uses value of web_server_type
109
+ top.deprec.app.install # Uses value of app_server_type
110
+ top.deprec.monit.install
111
+ top.deprec.logrotate.install
112
+
113
+ # We not longer install database server as part of this task.
114
+ # There is too much danger that someone will wreck an existing
115
+ # shared database.
116
+ #
117
+ # Install database server with:
118
+ #
119
+ # cap deprec:db:install
120
+ end
121
+
122
+ task :install_rails_stack do
123
+ puts "deprecated: this task is now called install_stack"
124
+ install_stack
125
+ end
126
+
127
+ desc "Generate config files for rails app."
128
+ task :config_gen do
129
+ top.deprec.web.config_gen_project
130
+ top.deprec.app.config_gen_project
131
+ end
132
+
133
+ desc "Push out config files for rails app."
134
+ task :config do
135
+ top.deprec.web.config_project
136
+ top.deprec.app.config_project
137
+ end
138
+
139
+ task :create_config_dir, :roles => :app do
140
+ deprec2.mkdir("#{shared_path}/config", :group => group, :mode => 0775, :via => :sudo)
141
+ end
142
+
143
+ # XXX This should be restricted a bit to limit what app can write to. - Mike
144
+ desc "set group ownership and permissions on dirs app server needs to write to"
145
+ task :make_writable_by_app, :roles => :app do
146
+ dirs = "#{shared_path} #{current_path}/tmp #{current_path}/public"
147
+ sudo "chgrp -R #{app_group} #{dirs}"
148
+ sudo "chmod -R g+w #{dirs}"
149
+
150
+ # set owner and group of log files
151
+ # XXX Factor out mongrel
152
+ files = ["#{mongrel_log_dir}/mongrel.log", "#{mongrel_log_dir}/#{rails_env}.log"]
153
+ files.each { |file|
154
+ sudo "touch #{file}"
155
+ sudo "chown #{app_user} #{file}"
156
+ sudo "chgrp #{app_group} #{file}"
157
+ sudo "chmod g+w #{file}"
158
+ }
159
+ end
160
+
161
+ desc "Create deployment group and add current user to it"
162
+ task :setup_user_perms, :roles => [:app, :web] do
163
+ deprec2.groupadd(group)
164
+ deprec2.add_user_to_group(user, group)
165
+ deprec2.groupadd(app_group)
166
+ deprec2.add_user_to_group(user, app_group)
167
+ # we've just added ourself to a group - need to teardown connection
168
+ # so that next command uses new session where we belong in group
169
+ deprec2.teardown_connections
170
+ end
171
+
172
+ desc "Create user and group for application to run as"
173
+ task :create_app_user_and_group, :roles => :app do
174
+ deprec2.groupadd(app_group)
175
+ deprec2.useradd(app_user, :group => app_group, :homedir => false)
176
+ # Set the primary group for the user the application runs as (in case
177
+ # user already existed when previous command was run)
178
+ sudo "usermod --gid #{app_group} --home #{app_user_homedir} #{app_user}"
179
+ end
180
+
181
+ task :set_perms_on_shared_and_releases, :roles => :app do
182
+ releases = File.join(deploy_to, 'releases')
183
+ sudo "chgrp -R #{group} #{shared_path} #{releases}"
184
+ sudo "chmod -R g+w #{shared_path} #{releases}"
185
+ end
186
+
187
+ # Setup database server.
188
+ task :setup_db, :roles => :db, :only => { :primary => true } do
189
+ top.deprec.mysql.setup
190
+ end
191
+
192
+ # setup extra paths required for deployment
193
+ task :setup_paths, :roles => [:app, :web] do
194
+ deprec2.mkdir(deploy_to, :mode => 0775, :group => group, :via => :sudo)
195
+ deprec2.mkdir(shared_path, :mode => 0775, :group => group, :via => :sudo)
196
+ end
197
+
198
+ # Symlink list of files and dirs from shared to current
199
+ #
200
+ # XXX write up explanation
201
+ #
202
+ desc "Setup shared dirs"
203
+ task :setup_shared_dirs, :roles => [:app, :web] do
204
+ if shared_dirs
205
+ shared_dirs.each { |dir| deprec2.mkdir( "#{shared_path}/#{dir}", :via => :sudo ) }
206
+ end
207
+ end
208
+ #
209
+ desc "Symlink shared dirs."
210
+ task :symlink_shared_dirs, :roles => [:app, :web] do
211
+ if shared_dirs
212
+ shared_dirs.each do |dir|
213
+ path = File.split(dir)[0]
214
+ if path != '.'
215
+ deprec2.mkdir("#{current_path}/#{path}")
216
+ end
217
+ sudo "test -d #{current_path}/#{dir} && mv #{current_path}/#{dir} #{current_path}/#{dir}.moved_by_deprec; exit 0"
218
+ run "ln -nfs #{shared_path}/#{dir} #{current_path}/#{dir}"
219
+ end
220
+ end
221
+ end
222
+
223
+ task :install_packages_for_project, :roles => :app do
224
+ if packages_for_project
225
+ apt.install({ :base => packages_for_project }, :stable)
226
+ end
227
+ end
228
+
229
+ task :install_gems_for_project, :roles => :app do
230
+ if gems_for_project
231
+ gems_for_project.each { |gem| gem2.install(gem) }
232
+ end
233
+ end
234
+
235
+ task :install_gem_sources_for_project, :roles => :app do
236
+ if gem_sources_for_project
237
+ gem_sources_for_project.each { |source| gem2.add_source(source) }
238
+ end
239
+ end
240
+
241
+ desc "Activate web, app and monit"
242
+ task :activate_services do
243
+ top.deprec.web.activate
244
+ top.deprec.app.activate
245
+ top.deprec.monit.activate
246
+ end
247
+
248
+ # database.yml stuff
249
+ #
250
+ # XXX DRY this up
251
+ # I don't know how to let :gen_db_yml check if values have been set.
252
+ #
253
+ # if (self.respond_to?("db_host_#{rails_env}".to_sym)) # doesn't seem to work
254
+
255
+ set :db_host_default, lambda { Capistrano::CLI.prompt 'Enter database host', 'localhost'}
256
+ set :db_host_staging, lambda { db_host_default }
257
+ set :db_host_production, lambda { db_host_default }
258
+
259
+ set :db_name_default, lambda { Capistrano::CLI.prompt 'Enter database name', "#{application}_#{rails_env}" }
260
+ set :db_name_staging, lambda { db_name_default }
261
+ set :db_name_production, lambda { db_name_default }
262
+
263
+ set :db_user_default, lambda { Capistrano::CLI.prompt 'Enter database user', 'root' }
264
+ set :db_user_staging, lambda { db_user_default }
265
+ set :db_user_production, lambda { db_user_default }
266
+
267
+ set :db_pass_default, lambda { Capistrano::CLI.prompt 'Enter database pass', '' }
268
+ set :db_pass_staging, lambda { db_pass_default }
269
+ set :db_pass_production, lambda { db_pass_default }
270
+
271
+ set :db_adaptor_default, lambda { Capistrano::CLI.prompt 'Enter database adaptor', 'mysql' }
272
+ set :db_adaptor_staging, lambda { db_adaptor_default }
273
+ set :db_adaptor_production, lambda { db_adaptor_default }
274
+
275
+ set :db_socket_default, lambda { Capistrano::CLI.prompt('Enter database socket', '')}
276
+ set :db_socket_staging, lambda { db_socket_default }
277
+ set :db_socket_production, lambda { db_socket_default }
278
+
279
+ task :generate_database_yml, :roles => :app do
280
+ database_configuration = render :template => <<-EOF
281
+ #{rails_env}:
282
+ adapter: #{self.send("db_adaptor_#{rails_env}")}
283
+ database: #{self.send("db_name_#{rails_env}")}
284
+ username: #{self.send("db_user_#{rails_env}")}
285
+ password: #{self.send("db_pass_#{rails_env}")}
286
+ host: #{self.send("db_host_#{rails_env}")}
287
+ socket: #{self.send("db_socket_#{rails_env}")}
288
+ EOF
289
+ run "mkdir -p #{deploy_to}/#{shared_dir}/config"
290
+ put database_configuration, "#{deploy_to}/#{shared_dir}/config/database.yml"
291
+ end
292
+
293
+ desc "Link in the production database.yml"
294
+ task :symlink_database_yml, :roles => :app do
295
+ run "#{sudo} ln -nfs #{shared_path}/config/database.yml #{current_path}/config/database.yml"
296
+ end
297
+
298
+ desc "Copy database.yml to shared/config/database.yml. Useful if not kept in scm"
299
+ task :push_database_yml, :roles => :app do
300
+ stage = exists?(:stage) ? fetch(:stage).to_s : ''
301
+ full_local_path = File.join('config', stage, 'database.yml')
302
+ if File.exists?(full_local_path)
303
+ std.su_put(File.read(full_local_path), "#{shared_path}/config/database.yml", '/tmp/')
304
+ end
305
+ end
306
+
307
+ end
308
+
309
+ namespace :database do
310
+
311
+ desc "Create database"
312
+ task :create, :roles => :app do
313
+ run "cd #{deploy_to}/current && rake db:create RAILS_ENV=#{rails_env}"
314
+ end
315
+
316
+ desc "Run database migrations"
317
+ task :migrate, :roles => :app do
318
+ run "cd #{deploy_to}/current && rake db:migrate RAILS_ENV=#{rails_env}"
319
+ end
320
+
321
+ desc "Run database migrations"
322
+ task :schema_load, :roles => :app do
323
+ run "cd #{deploy_to}/current && rake db:schema:load RAILS_ENV=#{rails_env}"
324
+ end
325
+
326
+ desc "Roll database back to previous migration"
327
+ task :rollback, :roles => :app do
328
+ run "cd #{deploy_to}/current && rake db:rollback RAILS_ENV=#{rails_env}"
329
+ end
330
+
331
+ end
332
+
333
+ end
334
+
335
+ end
336
+
337
+
@@ -6,7 +6,7 @@ Capistrano::Configuration.instance(:must_exist).load do
6
6
 
7
7
  SRC_PACKAGES[:mri] = {
8
8
  :md5sum => "18dcdfef761a745ac7da45b61776afa5 ruby-1.8.7-p174.tar.gz",
9
- :url => "ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p174.tar.gz",
9
+ :url => "http://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p174.tar.gz",
10
10
  :configure => "./configure --with-readline-dir=/usr/local;"
11
11
  }
12
12
 
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: visfleet-deprec
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.4
4
+ version: 2.1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Bailey
8
+ - Rasheed Abdul-Aziz
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
12
 
12
- date: 2009-10-13 00:00:00 +13:00
13
+ date: 2009-10-14 00:00:00 +13:00
13
14
  default_executable: depify
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
@@ -22,8 +23,18 @@ dependencies:
22
23
  - !ruby/object:Gem::Version
23
24
  version: 2.5.0
24
25
  version:
25
- description: " This project provides libraries of Capistrano tasks and extensions to \n remove the repetative manual work associated with installing services \n on linux servers.\n \n This is Visfleet's augmented version\n"
26
- email: mike@bailey.net.au
26
+ - !ruby/object:Gem::Dependency
27
+ name: capistrano-ext
28
+ type: :runtime
29
+ version_requirement:
30
+ version_requirements: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 1.2.1
35
+ version:
36
+ description: " This project provides libraries of Capistrano tasks and extensions to \n remove the repetative manual work associated with installing services \n on linux servers.\n \n This is Visfleet's augmented version.\n I've changed the email/homepage details to disassociate mbaily from our rubbish code.\n Apologies if this is poor form.\n\n Get the real version at http://github.com/mbailey/deprec\n\n Check the changlog for our efforts\n"
37
+ email: rasheed@visfleet.com
27
38
  executables:
28
39
  - depify
29
40
  extensions: []
@@ -198,6 +209,7 @@ files:
198
209
  - lib/deprec/recipes/sphinx.rb
199
210
  - lib/deprec/recipes/svn.rb
200
211
  - lib/deprec/recipes/ssh.rb
212
+ - lib/deprec/recipes/rails.rb.orig
201
213
  - lib/deprec/recipes/gitosis.rb
202
214
  - lib/deprec/recipes/xen.rb
203
215
  - lib/deprec/recipes/deprecated.rb
@@ -213,8 +225,9 @@ files:
213
225
  - LICENSE
214
226
  - README
215
227
  - THANKS
228
+ - TODO
216
229
  has_rdoc: true
217
- homepage: http://www.deprec.org/
230
+ homepage: http://labs.visfleet.com/
218
231
  licenses: []
219
232
 
220
233
  post_install_message:
@@ -236,10 +249,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
236
249
  version:
237
250
  requirements: []
238
251
 
239
- rubyforge_project: deprec
252
+ rubyforge_project:
240
253
  rubygems_version: 1.3.5
241
254
  signing_key:
242
255
  specification_version: 3
243
- summary: deployment recipes for capistrano
256
+ summary: Vsifleet deployment recipes for capistrano
244
257
  test_files: []
245
258