deprec 1.8.0 → 1.9.0

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.
@@ -11,7 +11,7 @@ to log into the remote server manually. Capistrano does all the work.
11
11
  # Install deprec on workstation
12
12
  sudo gem install deprec --include-dependencies
13
13
  echo 'require "deprec/recipes"' >> ~/.caprc
14
- echo 'ssh_options[:keys] = %w(~/.ssh/id_dsa)' >> ~/.caprc
14
+ echo "ssh_options[:keys] = %w(${HOME}/.ssh/id_dsa)" >> ~/.caprc
15
15
  echo 'ssh_options[:paranoid] = false' >> ~/.caprc
16
16
  echo 'ssh_options[:forward_agent] = true' >> ~/.caprc
17
17
 
@@ -19,12 +19,15 @@ module Capistrano
19
19
  end
20
20
  end
21
21
 
22
- def self.prompt(prompt="Password: ")
22
+ def self.prompt(prompt="Password", default=nil)
23
23
  sync = STDOUT.sync
24
24
  begin
25
25
  STDOUT.sync = true
26
- print(prompt)
27
- STDIN.gets.chomp
26
+ print("#{prompt}")
27
+ print " [#{default}]" if default
28
+ print ': '
29
+ response = STDIN.gets.chomp
30
+ response == '' ? default : response
28
31
  ensure
29
32
  STDOUT.sync = sync
30
33
  puts
@@ -34,6 +34,19 @@ set :rails_env, "production"
34
34
  # Automatically symlink these directories from current/public to shared/public.
35
35
  # set :app_symlinks, %w{photo, document, asset}
36
36
 
37
+ # =============================================================================
38
+ # SPECIAL OPTIONS
39
+ # =============================================================================
40
+ # These options allow you to tweak deprec behaviour
41
+
42
+ # If you do not keep database.yml in source control, set this to false.
43
+ # After new code is deployed, deprec will symlink current/config/database.yml
44
+ # to shared/config/database.yml
45
+ #
46
+ # You can generate shared/config/database.yml with 'cap generate_database_yml'
47
+ #
48
+ # set :database_yml_in_scm, true
49
+
37
50
  # =============================================================================
38
51
  # APACHE OPTIONS
39
52
  # =============================================================================
@@ -1,6 +1,7 @@
1
1
  require 'deprec/recipes/ssh'
2
2
  require 'deprec/recipes/svn'
3
3
  require 'deprec/recipes/trac'
4
+ require 'deprec/recipes/rails'
4
5
  require 'deprec/recipes/ubuntu'
5
6
  require 'deprec/recipes/apache'
6
7
  require 'deprec/recipes/memcache'
@@ -13,7 +14,7 @@ require 'deprec/capistrano_extensions/deprec_extensions.rb'
13
14
  require 'deprec/capistrano_extensions/actor_extensions.rb'
14
15
 
15
16
  Capistrano.configuration(:must_exist).load do
16
- set :application, lambda { Capistrano::CLI.prompt "Enter application name: " }
17
+ set :application, lambda { Capistrano::CLI.prompt "Enter application name" }
17
18
  set :user, (defined?(user) ? user : ENV['USER']) # user who is deploying
18
19
  set :group, 'deploy' # deployment group
19
20
  set :src_dir, (defined?(src_dir) ? src_dir : '/usr/local/src') # 3rd party src on servers
@@ -210,7 +211,7 @@ Capistrano.configuration(:must_exist).load do
210
211
  end
211
212
 
212
213
  task :setup_admin_account do
213
- user = Capistrano::CLI.prompt "Enter userid for new user: "
214
+ user = Capistrano::CLI.prompt "Enter userid for new user"
214
215
  deprec.useradd(user, :shell => '/bin/bash')
215
216
  puts "Setting pasword for new account"
216
217
  sudo_with_input("passwd #{user}", /UNIX password/) # ??? how many versions of the prompt are there?
@@ -0,0 +1,61 @@
1
+ Capistrano.configuration(:must_exist).load do
2
+
3
+ set :database_yml_in_scm, true
4
+
5
+ # database.yml stuff
6
+ #
7
+ # XXX DRY this up
8
+ # I don't know how to let :gen_db_yml check if values have been set.
9
+ #
10
+ # if (self.respond_to?("db_host_#{rails_env}".to_sym)) # doesn't seem to work
11
+
12
+ set :db_host_default, lambda { Capistrano::CLI.prompt 'Enter database host', 'localhost'}
13
+ set :db_host_staging, lambda { db_host_default }
14
+ set :db_host_production, lambda { db_host_default }
15
+
16
+ set :db_name_default, lambda { Capistrano::CLI.prompt 'Enter database name', "#{application}_#{rails_env}" }
17
+ set :db_name_staging, lambda { db_name_default }
18
+ set :db_name_production, lambda { db_name_default }
19
+
20
+ set :db_user_default, lambda { Capistrano::CLI.prompt 'Enter database user', 'root' }
21
+ set :db_user_staging, lambda { db_user_default }
22
+ set :db_user_production, lambda { db_user_default }
23
+
24
+ set :db_pass_default, lambda { Capistrano::CLI.prompt 'Enter database pass', '' }
25
+ set :db_pass_staging, lambda { db_pass_default }
26
+ set :db_pass_production, lambda { db_pass_default }
27
+
28
+ set :db_adaptor_default, lambda { Capistrano::CLI.prompt 'Enter database adaptor', 'mysql' }
29
+ set :db_adaptor_staging, lambda { db_adaptor_default }
30
+ set :db_adaptor_production, lambda { db_adaptor_default }
31
+
32
+ set :db_socket_default, lambda { Capistrano::CLI.prompt('Enter database socket', '')}
33
+ set :db_socket_staging, lambda { db_socket_default }
34
+ set :db_socket_production, lambda { db_socket_default }
35
+
36
+
37
+ task :generate_database_yml, :roles => :app do
38
+ database_configuration = render :template => <<-EOF
39
+ #{rails_env}:
40
+ adapter: #{self.send("db_adaptor_#{rails_env}")}
41
+ database: #{self.send("db_name_#{rails_env}")}
42
+ username: #{self.send("db_user_#{rails_env}")}
43
+ password: #{self.send("db_pass_#{rails_env}")}
44
+ host: #{self.send("db_host_#{rails_env}")}
45
+ socket: #{self.send("db_socket_#{rails_env}")}
46
+ EOF
47
+ run "mkdir -p #{deploy_to}/#{shared_dir}/config"
48
+ put database_configuration, "#{deploy_to}/#{shared_dir}/config/database.yml"
49
+ end
50
+
51
+ task :after_update_code, :roles => :app do
52
+ symlink_database_yml unless database_yml_in_scm
53
+ end
54
+
55
+ desc "Link in the production database.yml"
56
+ task :symlink_database_yml, :roles => :app do
57
+ run "rm -f #{current_path}/config/database.yml"
58
+ run "ln -nfs #{deploy_to}/#{shared_dir}/config/database.yml #{release_path}/config/database.yml"
59
+ end
60
+
61
+ end
@@ -34,13 +34,13 @@ Capistrano.configuration(:must_exist).load do
34
34
  elsif ENV['HOSTS']
35
35
  svn_host = ENV['HOSTS']
36
36
  else
37
- Capistrano::CLI.password_prompt('svn host: ')
37
+ Capistrano::CLI.prompt('svn host')
38
38
  end
39
39
  end
40
40
 
41
41
  # This is the actual path in the svn repos where we'll check our project into
42
42
  set (:repos_path) do
43
- repository ? URI.parse(repository).path : Capistrano::CLI.password_prompt('svn repos path: ')
43
+ repository ? URI.parse(repository).path : Capistrano::CLI.prompt('svn repos path')
44
44
  end
45
45
 
46
46
  # We'll calculate this based on the repos_path. It's used when initializing the repository
@@ -51,11 +51,14 @@ Capistrano.configuration(:must_exist).load do
51
51
  # account name to perform actions on
52
52
  # this is a hack to allow us to optionally pass a variable to tasks
53
53
  set (:svn_account) do
54
- Capistrano::CLI.prompt('account name: ')
54
+ Capistrano::CLI.prompt('account name')
55
55
  end
56
56
 
57
- # XXX sudo apt-get install swig python-dev
58
- # XXX requires apache already installed...
57
+ # I'd like to be able to construct :repository if it's not explicitly set
58
+ # However we're grabbing values from it in the lines above so it would get a bit recursive
59
+ # set :repository, lambda { "#{svn_scheme}://#{scm_host == 'localhost' ? '/' : user+'@'+scm_host}#{repos_path}" }
60
+
61
+ # XXX requires apache to have already been installed...
59
62
  desc "install Subversion version control system"
60
63
  task :svn_install, :roles => :scm do
61
64
  # svn 1.4 server improves on 1.3 and is backwards compatible with 1.3 clients
@@ -104,27 +107,24 @@ Capistrano.configuration(:must_exist).load do
104
107
  deprec.add_user_to_group(svn_account, scm_group)
105
108
  end
106
109
 
107
- task :scm_setup do # deprecated
108
- svn_setup
110
+ desc "Create subversion repository and import project into it"
111
+ task :svn_setup, :roles => :scm do
112
+ svn_create_repos
113
+ svn_import
109
114
  end
110
115
 
111
- task :svn_setup do
112
- svn_import_project
116
+ task :scm_setup, :roles => :scm do # deprecated
117
+ svn_setup
113
118
  end
114
119
 
115
- desc "Create subversion repository and import project into it"
116
- task :svn_import_project, :roles => :scm do
117
- svn_create_repos
118
- svn_import
120
+ task :svn_import_project, :roles => :scm do # deprecated
121
+ svn_setup
119
122
  end
120
123
 
121
124
  desc "Create a subversion repository"
122
125
  task :svn_create_repos, :roles => :scm do
123
126
  set :svn_account, user
124
127
  svn_grant_user_access
125
- # deprec.useradd(user)
126
- # deprec.groupadd(scm_group)
127
- # deprec.add_user_to_group(user, scm_group)
128
128
  deprec.mkdir(repos_root, :mode => '2775', :group => scm_group)
129
129
  sudo "svnadmin verify #{repos_root} > /dev/null 2>&1 || sudo svnadmin create #{repos_root}"
130
130
  sudo "chmod -R g+w #{repos_root}"
@@ -133,7 +133,6 @@ Capistrano.configuration(:must_exist).load do
133
133
  # Adapted from code in Bradley Taylors RailsMachine gem
134
134
  desc "Import project into subversion repository."
135
135
  task :svn_import, :roles => :scm do
136
- repository ||= "#{svn_scheme}://#{scm_host == 'localhost' ? '/' : scm_host}/#{repos_path}"
137
136
  new_path = "../#{application}"
138
137
  tags = repository.sub("trunk", "tags")
139
138
  branches = repository.sub("trunk", "branches")
@@ -4,13 +4,15 @@ Capistrano.configuration(:must_exist).load do
4
4
  set :trac_pidfile, lambda { "#{deploy_to}/shared/pids/trac.pid" }
5
5
  set :tracd_port, '9000'
6
6
  set (:trac_path) do
7
- deploy_to ? "#{deploy_to}/trac" : Capistrano::CLI.prompt('path to trac config: ')
7
+ deploy_to ? "#{deploy_to}/trac" : Capistrano::CLI.prompt('path to trac config')
8
8
  end
9
9
  set (:trac_account) do
10
- Capistrano::CLI.prompt('enter new trac user account name: ')
10
+ Capistrano::CLI.prompt('enter new trac user account name')
11
11
  end
12
12
  set :trac_passwordfile_exists, true # hack - should check on remote system instead
13
13
 
14
+ set :trac_smtp_enabled, true
15
+
14
16
  task :trac_install, :roles => :scm do
15
17
  version = 'trac-0.10.4'
16
18
  set :src_package, {
@@ -44,7 +44,7 @@ mime_encoding = base64
44
44
  smtp_always_bcc =
45
45
  smtp_always_cc =
46
46
  smtp_default_domain =
47
- smtp_enabled = false
47
+ smtp_enabled = <%= trac_smtp_enabled.to_s %>
48
48
  smtp_from = trac@localhost
49
49
  smtp_password =
50
50
  smtp_port = 25
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: deprec
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.8.0
7
- date: 2007-06-22 00:00:00 +10:00
6
+ version: 1.9.0
7
+ date: 2007-06-28 00:00:00 +10:00
8
8
  summary: deployment recipes for capistrano
9
9
  require_paths:
10
10
  - lib
@@ -53,6 +53,7 @@ files:
53
53
  - lib/deprec/recipes/apache.rb
54
54
  - lib/deprec/recipes/cache_svn.rb
55
55
  - lib/deprec/recipes/memcache.rb
56
+ - lib/deprec/recipes/rails.rb
56
57
  - lib/deprec/recipes/ssh.rb
57
58
  - lib/deprec/recipes/svn.rb
58
59
  - lib/deprec/recipes/trac.rb