railsmachine 0.1.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -1,3 +1,23 @@
1
1
  == Railsmachine
2
2
 
3
- Coming soon.
3
+ A set of capistrano recipes for simplifying the deployment of Rails applications.
4
+
5
+ The deployment process looks like this:
6
+
7
+ cd <app_directory>
8
+ capify .
9
+ railsmachine --apply-to . --name <app_name> --domain <yourdomain.com>
10
+ cap repos:setup
11
+ cd ../<app_name>_machine
12
+ cap servers:setup deploy:cold
13
+
14
+ Under the default configuration the gem will use these directories:
15
+
16
+ /var/www/apps/ - Rails applications
17
+ /etc/httpd/conf/apps/ - Apache configurations
18
+ /var/run/mongrel_cluster/ - Mongrel pid files
19
+ /etc/mongrel_cluster/ - Mongrel cluster configurations
20
+
21
+ You will need a 'deploy' system account with write access to the above directories.
22
+ You also need a 'deploy' mysql account with all privileges on *.* and grant option.
23
+
data/Rakefile CHANGED
@@ -15,15 +15,14 @@ setup_rdoc ['README', 'LICENSE', 'COPYING', 'lib/**/*.rb', 'doc/**/*.rdoc']
15
15
  desc "Does a full compile, test run"
16
16
  task :default => [:test, :package]
17
17
 
18
- version="0.1.2"
18
+ version="1.0.0"
19
19
  name="railsmachine"
20
20
 
21
21
  setup_gem(name, version) do |spec|
22
22
  spec.summary = "The Rails Machine task library"
23
23
  spec.description = spec.summary
24
- spec.author="Bradley Taylor"
25
- spec.add_dependency('capistrano', '>= 1.2.0')
26
- spec.add_dependency('mongrel_cluster', '>= 0.2.0')
24
+ spec.author="Bradley Taylor, Rob Lingle"
25
+ spec.add_dependency('capistrano', '>= 2.0.0')
27
26
  spec.has_rdoc = false
28
27
  spec.files += Dir.glob("bin/*")
29
28
  spec.files += Dir.glob("resources/**/*")
@@ -72,17 +72,24 @@ role :scm, domain
72
72
  # set :mongrel_port, apache_proxy_port
73
73
  # set :mongrel_address, apache_proxy_address
74
74
  # set :mongrel_environment, "production"
75
+ # set :mongrel_pid_file, "/var/run/mongrel_cluster/#{application}.pid"
75
76
  # set :mongrel_conf, "/etc/mongrel_cluster/#{application}.conf"
76
77
  # set :mongrel_user, user
77
78
  # set :mongrel_group, group
78
79
 
79
80
  # =============================================================================
80
- # MYSQL OPTIONS
81
+ # SCM OPTIONS
81
82
  # =============================================================================
82
-
83
+ #set :scm,"subversion"
83
84
 
84
85
  # =============================================================================
85
86
  # SSH OPTIONS
86
87
  # =============================================================================
87
88
  # ssh_options[:keys] = %w(/path/to/my/key /path/to/another/key)
88
89
  # ssh_options[:port] = 25
90
+
91
+ # =============================================================================
92
+ # CAPISTRANO OPTIONS
93
+ # =============================================================================
94
+ # default_run_options[:pty] = true
95
+ # set :keep_releases, 3
@@ -1,135 +1,161 @@
1
1
  require 'railsmachine/recipes/svn'
2
2
  require 'railsmachine/recipes/mysql'
3
+ require 'railsmachine/recipes/pgsql'
3
4
  require 'railsmachine/recipes/apache'
4
5
  require 'railsmachine/recipes/mongrel'
5
6
 
6
- Capistrano.configuration(:must_exist).load do
7
- set :app_symlinks, nil
8
-
9
- desc <<-DESC
10
- A macro task that calls setup, setup_db, setup_app, setup_symlinks, and setup_web.
11
- Used to configure your deployment environment in one command.
12
- DESC
13
- task :setup_servers do
14
- setup
15
- begin
16
- setup_db
17
- rescue
18
- puts "setup_db failed!"
19
- end
20
- setup_app
21
- setup_symlinks
22
- setup_web
23
- end
24
-
25
- desc <<-DESC
26
- A macro task that calls setup_db, setup_app, setup_symlinks, and setup_web.
27
- Used to configure your deployment environment in one command.
28
- DESC
29
- task :setup_app, :roles => :app do
30
- set :mongrel_environment, rails_env
31
- set :mongrel_port, apache_proxy_port
32
- set :mongrel_servers, apache_proxy_servers
33
- set :mongrel_user, user unless mongrel_user
34
- set :mongrel_group, mongrel_user unless mongrel_group
35
- set_mongrel_conf
36
- configure_mongrel_cluster
37
- end
7
+ Capistrano::Configuration.instance(:must_exist).load do
38
8
 
39
- desc "Restart application server."
40
- task :restart_app, :roles => :app do
41
- set_mongrel_conf
42
- restart_mongrel_cluster
43
- end
9
+ default_run_options[:pty] = true
10
+ set :keep_releases, 3
11
+ set :app_symlinks, nil
44
12
 
45
- desc "Start application server."
46
- task :start_app, :roles => :app do
47
- set_mongrel_conf
48
- start_mongrel_cluster
49
- end
13
+ namespace :servers do
14
+
15
+ desc <<-DESC
16
+ A macro task that calls setup for db, app, symlinks, and web.
17
+ Used to configure your deployment environment in one command.
18
+ DESC
19
+ task :setup do
20
+ deploy.setup
21
+ begin
22
+ db.setup
23
+ rescue
24
+ puts "db:setup failed!"
25
+ end
26
+ app.setup
27
+ web.setup
28
+ end
50
29
 
51
- desc "Stop application server."
52
- task :stop_app, :roles => :app do
53
- set_mongrel_conf
54
- stop_mongrel_cluster
55
- end
30
+ desc "A macro task that restarts the application and web servers"
31
+ task :restart do
32
+ app.restart
33
+ web.restart
34
+ end
56
35
 
57
- def set_mongrel_conf
58
- set :mongrel_conf, "/etc/mongrel_cluster/#{application}.conf" unless mongrel_conf
59
- end
60
-
61
- desc "Setup web server."
62
- task :setup_web, :roles => :web do
63
- set :apache_server_name, domain unless apache_server_name
64
- configure_apache
65
36
  end
66
37
 
67
- desc "Restart web server."
68
- task :restart_web, :roles => :web do
69
- restart_apache
70
- end
38
+ namespace :app do
71
39
 
72
- desc "Reload web server configuration."
73
- task :reload_web, :roles => :web do
74
- reload_apache
75
- end
40
+ desc 'Setup mongrel'
41
+ task :setup, :roles => :app do
42
+ set :mongrel_environment, rails_env
43
+ set :mongrel_port, apache_proxy_port
44
+ set :mongrel_servers, apache_proxy_servers
45
+ set :mongrel_user, user unless mongrel_user
46
+ set :mongrel_group, mongrel_user unless mongrel_group
47
+ set_mongrel_conf
48
+ mongrel.cluster.configure
49
+ end
50
+
51
+ desc "Restart application server."
52
+ task :restart, :roles => :app do
53
+ set_mongrel_conf
54
+ mongrel.cluster.restart
55
+ end
56
+
57
+ desc "Start application server."
58
+ task :start, :roles => :app do
59
+ set_mongrel_conf
60
+ mongrel.cluster.start
61
+ end
62
+
63
+ desc "Stop application server."
64
+ task :stop, :roles => :app do
65
+ set_mongrel_conf
66
+ mongrel.cluster.stop
67
+ end
76
68
 
77
- desc "Start web server."
78
- task :start_web, :roles => :web do
79
- start_apache
80
- end
69
+ namespace :symlinks do
81
70
 
82
- desc "Stop web server."
83
- task :stop_web, :roles => :web do
84
- stop_apache
85
- end
71
+ desc "Setup application symlinks in the public"
72
+ task :setup, :roles => [:app, :web] do
73
+ if app_symlinks
74
+ app_symlinks.each { |link| run "mkdir -p #{shared_path}/public/#{link}" }
75
+ end
76
+ end
77
+
78
+ desc "Link public directories to shared location."
79
+ task :update, :roles => [:app, :web] do
80
+ if app_symlinks
81
+ app_symlinks.each { |link| run "ln -nfs #{shared_path}/public/#{link} #{current_path}/public/#{link}" }
82
+ end
83
+ end
86
84
 
87
- desc "Setup database server."
88
- task :setup_db, :roles => :db, :only => { :primary => true } do
89
- setup_mysql
90
- end
85
+ end
91
86
 
92
- desc "Setup source control server."
93
- task :setup_scm, :roles => :scm do
94
- begin
95
- setup_svn
96
- rescue
97
- puts "setup_svn failed!"
98
- end
99
- import_svn
100
87
  end
101
88
 
102
- desc "Setup public symlink directories"
103
- task :setup_symlinks, :roles => [:app, :web] do
104
- if app_symlinks
105
- app_symlinks.each { |link| run "mkdir -p #{shared_path}/public/#{link}" }
89
+ namespace :web do
90
+
91
+ desc "Setup web server."
92
+ task :setup, :roles => :web do
93
+ set :apache_server_name, domain unless apache_server_name
94
+ apache.configure
95
+ end
96
+
97
+ desc "Restart web server."
98
+ task :restart, :roles => :web do
99
+ apache.restart
106
100
  end
101
+
102
+ desc "Reload web server configuration."
103
+ task :reload, :roles => :web do
104
+ apache.reload
105
+ end
106
+
107
+ desc "Start web server."
108
+ task :start, :roles => :web do
109
+ apache.start
110
+ end
111
+
112
+ desc "Stop web server."
113
+ task :stop, :roles => :web do
114
+ apache.stop
115
+ end
116
+
117
+ end
118
+
119
+ namespace :db do
120
+
121
+ desc "Setup database server."
122
+ task :setup, :roles => :db, :only => { :primary => true } do
123
+ db_config = YAML.load_file('config/database.yml')
124
+ db_type = db_config[rails_env]["adapter"]
125
+ case db_config[rails_env]["adapter"]
126
+ when "mysql"
127
+ mysql.setup
128
+ when "postgresql"
129
+ postgresql.setup
130
+ else
131
+ puts "Only MySQL or Postgres can be configured by db:setup."
132
+ end
133
+ end
134
+
107
135
  end
108
136
 
109
- desc "Link up any public directories."
110
- task :symlink_public, :roles => [:app, :web] do
111
- if app_symlinks
112
- app_symlinks.each { |link| run "ln -nfs #{shared_path}/public/#{link} #{current_path}/public/#{link}" }
137
+ namespace :repos do
138
+
139
+ desc "Setup source control repository."
140
+ task :setup, :roles => :scm do
141
+ begin
142
+ svn.setup
143
+ rescue
144
+ puts "svn:setup failed!"
113
145
  end
114
- end
146
+ svn.import
147
+ end
115
148
 
116
- desc <<-DESC
117
- Restart the processes on the application server by calling restart_app.
118
- DESC
119
- task :restart, :roles => :app do
120
- restart_app
121
149
  end
122
150
 
123
- desc <<-DESC
124
- Start the processes on the application server by calling start_app.
125
- DESC
126
- task :spinner, :roles => :app do
127
- start_app
128
- end
129
151
 
130
- desc "Creates additional symlinks."
131
- task :after_symlink, :roles => [:app, :web] do
132
- symlink_public
133
- end
152
+ before 'deploy:update_code', 'app:symlinks:setup'
153
+ after 'deploy:symlink', 'app:symlinks:update'
154
+ after 'deploy:cold', 'web:reload'
155
+ after :deploy,'deploy:cleanup'
156
+
157
+ def set_mongrel_conf
158
+ set :mongrel_conf, "/etc/mongrel_cluster/#{application}.conf" unless mongrel_conf
159
+ end
134
160
 
135
161
  end
@@ -1,4 +1,5 @@
1
- Capistrano.configuration(:must_exist).load do
1
+ require 'erb'
2
+ Capistrano::Configuration.instance(:must_exist).load do
2
3
 
3
4
  set :apache_server_name, nil
4
5
  set :apache_conf, nil
@@ -13,49 +14,55 @@ Capistrano.configuration(:must_exist).load do
13
14
  set :apache_ssl_ip, nil
14
15
  set :apache_ssl_forward_all, false
15
16
 
16
- desc "Configure Apache. This uses the :use_sudo
17
- variable to determine whether to use sudo or not. By default, :use_sudo is
18
- set to true."
19
- task :configure_apache, :roles => :web do
20
- set_apache_conf
17
+ namespace :apache do
18
+
19
+ desc "Configure Apache. This uses the :use_sudo
20
+ variable to determine whether to use sudo or not. By default, :use_sudo is
21
+ set to true."
22
+ task :configure, :roles => :web do
23
+ set_apache_conf
24
+
25
+ server_aliases = []
26
+ server_aliases << "www.#{apache_server_name}"
27
+ server_aliases.concat apache_server_aliases
28
+ set :apache_server_aliases_array, server_aliases
29
+
30
+ file = File.join(File.dirname(__FILE__), "templates", "httpd.conf")
31
+ template = File.read(file)
32
+ buffer = ERB.new(template).result(binding)
33
+
34
+ if apache_ssl_enabled
35
+ file = File.join(File.dirname(__FILE__), "templates", "httpd-ssl.conf")
36
+ template = File.read(file)
37
+ ssl_buffer = ERB.new(template).result(binding)
38
+ buffer += ssl_buffer
39
+ end
40
+
41
+ put buffer, "#{shared_path}/httpd.conf", :mode => 0444
42
+ send(run_method, "cp #{shared_path}/httpd.conf #{apache_conf}")
43
+ send(run_method, "rm -f #{shared_path}/httpd.conf")
44
+ end
21
45
 
22
- server_aliases = []
23
- server_aliases << "www.#{apache_server_name}"
24
- server_aliases.concat apache_server_aliases
25
- set :apache_server_aliases_array, server_aliases
46
+ desc "Start Apache "
47
+ task :start, :roles => :web do
48
+ send(run_method, "#{apache_ctl} start")
49
+ end
26
50
 
27
- file = File.join(File.dirname(__FILE__), "templates", "httpd.conf")
28
- buffer = render :template => File.read(file)
51
+ desc "Restart Apache "
52
+ task :restart, :roles => :web do
53
+ send(run_method, "#{apache_ctl} restart")
54
+ end
29
55
 
30
- if apache_ssl_enabled
31
- file = File.join(File.dirname(__FILE__), "templates", "httpd-ssl.conf")
32
- ssl_buffer = render :template => File.read(file)
33
- buffer += ssl_buffer
56
+ desc "Stop Apache "
57
+ task :stop, :roles => :web do
58
+ send(run_method, "#{apache_ctl} stop")
34
59
  end
35
60
 
36
- put buffer, "#{shared_path}/httpd.conf", :mode => 0444
37
- send(run_method, "cp #{shared_path}/httpd.conf #{apache_conf}")
38
- delete "#{shared_path}/httpd.conf"
39
- end
40
-
41
- desc "Start Apache "
42
- task :start_apache, :roles => :web do
43
- send(run_method, "#{apache_ctl} start")
44
- end
45
-
46
- desc "Restart Apache "
47
- task :restart_apache, :roles => :web do
48
- send(run_method, "#{apache_ctl} restart")
49
- end
50
-
51
- desc "Stop Apache "
52
- task :stop_apache, :roles => :web do
53
- send(run_method, "#{apache_ctl} stop")
54
- end
61
+ desc "Reload Apache "
62
+ task :reload, :roles => :web do
63
+ send(run_method, "#{apache_ctl} reload")
64
+ end
55
65
 
56
- desc "Reload Apache "
57
- task :reload_apache, :roles => :web do
58
- send(run_method, "#{apache_ctl} reload")
59
66
  end
60
67
 
61
68
  def set_apache_conf
@@ -66,4 +73,4 @@ Capistrano.configuration(:must_exist).load do
66
73
  end
67
74
  end
68
75
 
69
- end
76
+ end
@@ -1 +1,127 @@
1
- require 'mongrel_cluster/recipes'
1
+ Capistrano::Configuration.instance(:must_exist).load do
2
+ set :mongrel_servers, 2
3
+ set :mongrel_port, 8000
4
+ set :mongrel_address, "127.0.0.1"
5
+ set :mongrel_environment, "production"
6
+ set :mongrel_conf, nil
7
+ set :mongrel_user, nil
8
+ set :mongrel_group, nil
9
+ set :mongrel_prefix, nil
10
+ set :mongrel_rails, 'mongrel_rails'
11
+ set :mongrel_clean, false
12
+ set :mongrel_pid_file, nil
13
+ set :mongrel_log_file, nil
14
+ set :mongrel_config_script, nil
15
+
16
+ namespace :mongrel do
17
+
18
+ namespace :cluster do
19
+
20
+ desc <<-DESC
21
+ Configure Mongrel processes on the app server. This uses the :use_sudo
22
+ variable to determine whether to use sudo or not. By default, :use_sudo is
23
+ set to true.
24
+ DESC
25
+ task :configure, :roles => :app do
26
+ set_mongrel_conf
27
+ set_mongrel_pid_file
28
+
29
+ argv = []
30
+ argv << "#{mongrel_rails} cluster::configure"
31
+ argv << "-N #{mongrel_servers.to_s}"
32
+ argv << "-p #{mongrel_port.to_s}"
33
+ argv << "-e #{mongrel_environment}"
34
+ argv << "-a #{mongrel_address}"
35
+ argv << "-c #{current_path}"
36
+ argv << "-C #{mongrel_conf}"
37
+ argv << "-P #{mongrel_pid_file}"
38
+ argv << "-l #{mongrel_log_file}" if mongrel_log_file
39
+ argv << "--user #{mongrel_user}" if mongrel_user
40
+ argv << "--group #{mongrel_group}" if mongrel_group
41
+ argv << "--prefix #{mongrel_prefix}" if mongrel_prefix
42
+ argv << "-S #{mongrel_config_script}" if mongrel_config_script
43
+ cmd = argv.join " "
44
+ send(run_method, cmd)
45
+ end
46
+
47
+ desc <<-DESC
48
+ Start Mongrel processes on the app server. This uses the :use_sudo variable to determine whether to use sudo or not. By default, :use_sudo is
49
+ set to true.
50
+ DESC
51
+ task :start, :roles => :app do
52
+ set_mongrel_conf
53
+ cmd = "#{mongrel_rails} cluster::start -C #{mongrel_conf}"
54
+ cmd += " --clean" if mongrel_clean
55
+ send(run_method, cmd)
56
+ end
57
+
58
+ desc <<-DESC
59
+ Restart the Mongrel processes on the app server by starting and stopping the cluster. This uses the :use_sudo
60
+ variable to determine whether to use sudo or not. By default, :use_sudo is set to true.
61
+ DESC
62
+ task :restart, :roles => :app do
63
+ set_mongrel_conf
64
+ cmd = "#{mongrel_rails} cluster::restart -C #{mongrel_conf}"
65
+ cmd += " --clean" if mongrel_clean
66
+ send(run_method, cmd)
67
+ end
68
+
69
+ desc <<-DESC
70
+ Stop the Mongrel processes on the app server. This uses the :use_sudo
71
+ variable to determine whether to use sudo or not. By default, :use_sudo is
72
+ set to true.
73
+ DESC
74
+ task :stop, :roles => :app do
75
+ set_mongrel_conf
76
+ cmd = "#{mongrel_rails} cluster::stop -C #{mongrel_conf}"
77
+ cmd += " --clean" if mongrel_clean
78
+ send(run_method, cmd)
79
+ end
80
+
81
+ desc <<-DESC
82
+ Check the status of the Mongrel processes on the app server. This uses the :use_sudo
83
+ variable to determine whether to use sudo or not. By default, :use_sudo is
84
+ set to true.
85
+ DESC
86
+ task :status, :roles => :app do
87
+ set_mongrel_conf
88
+ send(run_method, "#{mongrel_rails} cluster::status -C #{mongrel_conf}")
89
+ end
90
+
91
+ end
92
+
93
+ end
94
+
95
+ namespace :deploy do
96
+
97
+ desc <<-DESC
98
+ Start the Mongrel processes on the app server by calling start_mongrel_cluster.
99
+ DESC
100
+ task :start, :roles => :app do
101
+ mongrel.cluster.start
102
+ end
103
+
104
+ desc <<-DESC
105
+ Restart the Mongrel processes on the app server by calling restart_mongrel_cluster.
106
+ DESC
107
+ task :restart, :roles => :app do
108
+ mongrel.cluster.restart
109
+ end
110
+
111
+ desc <<-DESC
112
+ Stop the Mongrel processes on the app server by calling stop_mongrel_cluster.
113
+ DESC
114
+ task :stop, :roles => :app do
115
+ mongrel.cluster.stop
116
+ end
117
+
118
+ end
119
+
120
+ def set_mongrel_conf
121
+ set :mongrel_conf, "/etc/mongrel_cluster/#{application}.yml" unless mongrel_conf
122
+ end
123
+
124
+ def set_mongrel_pid_file
125
+ set :mongrel_pid_file, "/var/run/mongrel_cluster/#{application}.pid" unless mongrel_pid_file
126
+ end
127
+ end
@@ -20,28 +20,32 @@ module MySQLMethods
20
20
  end
21
21
  end
22
22
 
23
- Capistrano.plugin :mysql, MySQLMethods
23
+ Capistrano.plugin :mysql_helper, MySQLMethods
24
24
 
25
- Capistrano.configuration(:must_exist).load do
25
+ Capistrano::Configuration.instance(:must_exist).load do
26
26
 
27
27
  set :mysql_admin, nil
28
28
 
29
- desc "Execute MySQL statements using --execute option. Set the 'sql' variable."
30
- task :execute_mysql, :roles => :db, :only => { :primary => true } do
31
- set_mysql_admin
32
- mysql.execute sql, mysql_admin
33
- end
29
+ namespace :mysql do
34
30
 
35
- desc "Create MySQL database and user based on config/database.yml"
36
- task :setup_mysql, :roles => :db, :only => { :primary => true } do
37
- # on_rollback {}
38
-
39
- set_mysql_admin
40
- read_config
31
+ desc "Execute MySQL statements using --execute option. Set the 'sql' variable."
32
+ task :execute, :roles => :db, :only => { :primary => true } do
33
+ set_mysql_admin
34
+ mysql_helper.execute sql, mysql_admin
35
+ end
41
36
 
42
- sql = "CREATE DATABASE #{db_name};"
43
- sql += "GRANT ALL PRIVILEGES ON #{db_name}.* TO #{db_user}@localhost IDENTIFIED BY '#{db_password}';"
44
- mysql.execute sql, mysql_admin
37
+ desc "Create MySQL database and user based on config/database.yml"
38
+ task :setup, :roles => :db, :only => { :primary => true } do
39
+ # on_rollback {}
40
+
41
+ set_mysql_admin
42
+ read_config
43
+
44
+ sql = "CREATE DATABASE #{db_name};"
45
+ sql += "GRANT ALL PRIVILEGES ON #{db_name}.* TO #{db_user}@localhost IDENTIFIED BY '#{db_password}';"
46
+ mysql_helper.execute sql, mysql_admin
47
+ end
48
+
45
49
  end
46
50
 
47
51
  def read_config
@@ -55,4 +59,4 @@ Capistrano.configuration(:must_exist).load do
55
59
  set :mysql_admin, user unless mysql_admin
56
60
  end
57
61
 
58
- end
62
+ end
@@ -1,8 +1,5 @@
1
- # Copyright 2006, Bradley Taylor, bradley@railsmachine.com
2
- # Licensed under the GNU Lesser General Public License.
3
-
4
- # CentOS 4.3 install for Rails Machine
5
- # sudo -s
1
+ # CentOS install for Rails Machine
2
+ # sudo su -
6
3
  # yum install postgresql-client postgresql-server postgresql-devel
7
4
  # chkconfig postgresql on
8
5
  # service postgresql start
@@ -41,19 +38,18 @@ end
41
38
 
42
39
  Capistrano.plugin :pgsql, PostgreSQLMethods
43
40
 
44
- Capistrano.configuration(:must_exist).load do
41
+ Capistrano::Configuration.instance(:must_exist).load do
45
42
 
46
- desc "Create PosgreSQL database and user based on config/database.yml"
47
- task :setup_pgsql, :roles => :db, :only => { :primary => true } do
48
- # on_rollback {} TODO
49
- read_config
50
- pgsql.createuser db_user, db_password
51
- pgsql.createdb db_name, db_user
52
- end
43
+ namespace :postgresql do
44
+
45
+ desc "Create PosgreSQL database and user based on config/database.yml"
46
+ task :setup, :roles => :db, :only => { :primary => true } do
47
+ # on_rollback {} TODO
48
+ read_config
49
+ pgsql.createuser db_user, db_password
50
+ pgsql.createdb db_name, db_user
51
+ end
53
52
 
54
- desc "Setup database"
55
- task :setup_db, :roles => :db, :only => { :primary => true } do
56
- setup_pgsql
57
53
  end
58
54
 
59
55
  def read_config
@@ -63,4 +59,4 @@ Capistrano.configuration(:must_exist).load do
63
59
  set :db_name, db_config[rails_env]["database"]
64
60
  end
65
61
 
66
- end
62
+ end
@@ -1,42 +1,46 @@
1
1
  require 'fileutils'
2
- Capistrano.configuration(:must_exist).load do
2
+ Capistrano::Configuration.instance(:must_exist).load do
3
3
 
4
- desc "Setup svn repository"
5
- task :setup_svn, :roles => :scm do
6
- dir = "#{deploy_to}/repos"
7
- run "mkdir -p #{dir}"
8
- run "chmod 770 #{dir}"
9
- run "svnadmin create #{dir}"
10
- end
4
+ namespace :svn do
5
+
6
+ desc "Setup svn repository"
7
+ task :setup, :roles => :scm do
8
+ dir = "#{deploy_to}/repos"
9
+ run "mkdir -p #{dir}"
10
+ run "chmod 770 #{dir}"
11
+ run "svnadmin create #{dir}"
12
+ end
13
+
14
+ desc "Import code into svn repository."
15
+ task :import do
16
+ new_path = Dir.pwd + "_machine"
17
+ tags = repository.sub("trunk", "tags")
18
+ branches = repository.sub("trunk", "branches")
19
+ puts "Adding branches and tags"
20
+ system "svn mkdir -m 'Adding tags and branches directories' #{tags} #{branches}"
21
+ puts "Importing application."
22
+ system "svn import #{repository} -m 'Import'"
23
+ puts "Checking out to new directory."
24
+ system "svn co #{repository} #{new_path}"
25
+ cwd = Dir.getwd
26
+ Dir.chdir new_path
27
+ puts "removing log directory contents from svn"
28
+ system "svn remove log/*"
29
+ puts "ignoring log directory"
30
+ system "svn propset svn:ignore '*.log' log/"
31
+ system "svn update log/"
32
+ puts "removing tmp directory from svn"
33
+ system "svn remove tmp/"
34
+ puts "ignoring tmp directory"
35
+ system "svn propset svn:ignore '*' tmp/"
36
+ system "svn update tmp/"
37
+ puts "committing changes"
38
+ system "svn commit -m 'Removed and ignored log files and tmp'"
39
+ Dir.chdir cwd
40
+ puts "Your repository is: #{repository}"
41
+ puts "Please change to your new working directory: #{new_path}"
42
+ end
11
43
 
12
- desc "Import code into svn repository."
13
- task :import_svn do
14
- new_path = Dir.pwd + "_machine"
15
- tags = repository.sub("trunk", "tags")
16
- branches = repository.sub("trunk", "branches")
17
- puts "Adding branches and tags"
18
- system "svn mkdir -m 'Adding tags and branches directories' #{tags} #{branches}"
19
- puts "Importing application."
20
- system "svn import #{repository} -m 'Import'"
21
- puts "Checking out to new directory."
22
- system "svn co #{repository} #{new_path}"
23
- cwd = Dir.getwd
24
- Dir.chdir new_path
25
- puts "removing log directory contents from svn"
26
- system "svn remove log/*"
27
- puts "ignoring log directory"
28
- system "svn propset svn:ignore '*.log' log/"
29
- system "svn update log/"
30
- puts "removing tmp directory from svn"
31
- system "svn remove tmp/"
32
- puts "ignoring tmp directory"
33
- system "svn propset svn:ignore '*' tmp/"
34
- system "svn update tmp/"
35
- puts "committing changes"
36
- system "svn commit -m 'Removed and ignored log files and tmp'"
37
- Dir.chdir cwd
38
- puts "Your repository is: #{repository}"
39
- puts "Please change to your new working directory: #{new_path}"
40
44
  end
41
45
 
42
46
  end
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.0
2
+ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: railsmachine
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.1.2
7
- date: 2006-11-29 00:00:00 -05:00
6
+ version: 1.0.0
7
+ date: 2007-11-02 00:00:00 -04:00
8
8
  summary: The Rails Machine task library
9
9
  require_paths:
10
10
  - lib
@@ -27,7 +27,7 @@ signing_key:
27
27
  cert_chain:
28
28
  post_install_message:
29
29
  authors:
30
- - Bradley Taylor
30
+ - Bradley Taylor, Rob Lingle
31
31
  files:
32
32
  - COPYING
33
33
  - LICENSE
@@ -36,22 +36,22 @@ files:
36
36
  - bin/railsmachine
37
37
  - lib/railsmachine
38
38
  - lib/railsmachine/generators
39
- - lib/railsmachine/recipes
40
- - lib/railsmachine/recipes.rb
41
39
  - lib/railsmachine/generators/loader.rb
42
40
  - lib/railsmachine/generators/railsmachine
43
- - lib/railsmachine/generators/railsmachine/railsmachine_generator.rb
44
41
  - lib/railsmachine/generators/railsmachine/templates
45
- - lib/railsmachine/generators/railsmachine/USAGE
46
42
  - lib/railsmachine/generators/railsmachine/templates/deploy.rb
47
- - lib/railsmachine/recipes/apache.rb
48
- - lib/railsmachine/recipes/mongrel.rb
49
- - lib/railsmachine/recipes/mysql.rb
50
- - lib/railsmachine/recipes/pgsql.rb
51
- - lib/railsmachine/recipes/svn.rb
43
+ - lib/railsmachine/generators/railsmachine/railsmachine_generator.rb
44
+ - lib/railsmachine/generators/railsmachine/USAGE
45
+ - lib/railsmachine/recipes.rb
46
+ - lib/railsmachine/recipes
52
47
  - lib/railsmachine/recipes/templates
53
- - lib/railsmachine/recipes/templates/httpd-ssl.conf
54
48
  - lib/railsmachine/recipes/templates/httpd.conf
49
+ - lib/railsmachine/recipes/templates/httpd-ssl.conf
50
+ - lib/railsmachine/recipes/pgsql.rb
51
+ - lib/railsmachine/recipes/mysql.rb
52
+ - lib/railsmachine/recipes/svn.rb
53
+ - lib/railsmachine/recipes/mongrel.rb
54
+ - lib/railsmachine/recipes/apache.rb
55
55
  - tools/rakehelp.rb
56
56
  - resources/defaults.yaml
57
57
  test_files: []
@@ -74,14 +74,5 @@ dependencies:
74
74
  requirements:
75
75
  - - ">="
76
76
  - !ruby/object:Gem::Version
77
- version: 1.2.0
78
- version:
79
- - !ruby/object:Gem::Dependency
80
- name: mongrel_cluster
81
- version_requirement:
82
- version_requirements: !ruby/object:Gem::Version::Requirement
83
- requirements:
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- version: 0.2.0
77
+ version: 2.0.0
87
78
  version: