uberspacify 0.9.0 → 0.9.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.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Uberspacify
2
2
 
3
- Uberspacify helps you deploy a Ruby on Rails app on Uberspace, a popular German shared hosting provider.
3
+ Uberspacify helps you deploy a Ruby on Rails app on Uberspace, a popular shared hosting provider.
4
4
 
5
5
  All the magic is built into a couple nice Capistrano scripts. Uberspacify will create an environment for your app, install Passenger, run it in standalone mode, monitor it using Daemontools, and configure Apache to reverse-proxy to it. Uberspacify will also find out your Uberspace MySQL password and create databases as well as a `database.yml`
6
6
 
@@ -31,7 +31,11 @@ load 'deploy/assets'
31
31
  Now, you need to add a few lines regarding your Uberspace to your `config/deploy.rb`. It is safe to copy, paste & adapt the following:
32
32
 
33
33
  ```ruby
34
- require 'uberspacify/recipes'
34
+ # include uberspacify base recipes
35
+ require 'uberspacify/base'
36
+
37
+ # uncomment this if you don't use MySQL
38
+ require 'uberspacify/mysql'
35
39
 
36
40
  # the Uberspace server you are on
37
41
  server 'phoenix.uberspace.de', :web, :app, :db, :primary => true
@@ -58,6 +62,11 @@ set :repository, 'https://github.com/yeah/dummyapp.git'
58
62
  # be available on port 80 and 443 from the outside. However, if you'd like to
59
63
  # set this yourself, go ahead.
60
64
  # set :passenger_port, 55555
65
+
66
+ # By default, Ruby Enterprise Edition 1.8.7 is used for Uberspace. If you
67
+ # prefer Ruby 1.9 or any other version, please refer to the RVM documentation
68
+ # at https://rvm.io/integration/capistrano/ and set this variable.
69
+ # set :rvm_ruby_string, '1.9.3@rails-dummyapp'
61
70
  ```
62
71
 
63
72
  Done. That was the hard part. It's easy from here on out. Next, add all new/modified files to version control. If you use Git, the following will do:
@@ -0,0 +1,107 @@
1
+ require 'capistrano_colors'
2
+ require 'rvm/capistrano'
3
+ require 'bundler/capistrano'
4
+
5
+ def abort_red(msg)
6
+ abort " * \e[#{1};31mERROR: #{msg}\e[0m"
7
+ end
8
+
9
+ Capistrano::Configuration.instance.load do
10
+
11
+ # required variables
12
+ _cset(:user) { abort_red "Please configure your Uberspace user in config/deploy.rb using 'set :user, <username>'" }
13
+ _cset(:repository) { abort_red "Please configure your code repository config/deploy.rb using 'set :repository, <repo uri>'" }
14
+
15
+ # optional variables
16
+ _cset(:domain) { nil }
17
+ _cset(:passenger_port) { rand(61000-32768+1)+32768 } # random ephemeral port
18
+
19
+ _cset(:deploy_via) { :remote_cache }
20
+ _cset(:git_enable_submodules) { 1 }
21
+ _cset(:branch) { 'master' }
22
+
23
+ _cset(:keep_releases) { 3 }
24
+
25
+ # uberspace presets
26
+ set(:deploy_to) { "/var/www/virtual/#{user}/rails/#{application}" }
27
+ set(:home) { "/home/#{user}" }
28
+ set(:use_sudo) { false }
29
+ set(:rvm_type) { :user }
30
+ set(:rvm_install_ruby) { :install }
31
+ set(:rvm_ruby_string) { "ree@rails-#{application}" }
32
+
33
+ ssh_options[:forward_agent] = true
34
+ default_run_options[:pty] = true
35
+
36
+ # callbacks
37
+ before 'deploy:setup', 'rvm:install_rvm'
38
+ before 'deploy:setup', 'rvm:install_ruby'
39
+ after 'deploy:setup', 'uberspace:setup_svscan'
40
+ after 'deploy:setup', 'daemontools:setup_daemon'
41
+ after 'deploy:setup', 'apache:setup_reverse_proxy'
42
+ after 'deploy:update_code', 'deploy:symlink_shared'
43
+ after 'deploy', 'deploy:cleanup'
44
+
45
+ # custom recipes
46
+ namespace :uberspace do
47
+ task :setup_svscan do
48
+ run 'uberspace-setup-svscan ; echo 0'
49
+ end
50
+ end
51
+
52
+ namespace :daemontools do
53
+ task :setup_daemon do
54
+ daemon_script = <<-EOF
55
+ #!/bin/bash
56
+ export HOME=#{fetch :home}
57
+ source $HOME/.bash_profile
58
+ cd #{fetch :deploy_to}/current
59
+ rvm use #{fetch :rvm_ruby_string}
60
+ exec bundle exec passenger start -p #{fetch :passenger_port} -e production 2>&1
61
+ EOF
62
+
63
+ log_script = <<-EOF
64
+ #!/bin/sh
65
+ exec multilog t ./main
66
+ EOF
67
+
68
+ run "mkdir -p #{fetch :home}/etc/run-rails-#{fetch :application}"
69
+ run "mkdir -p #{fetch :home}/etc/run-rails-#{fetch :application}/log"
70
+ put daemon_script, "#{fetch :home}/etc/run-rails-#{fetch :application}/run"
71
+ put log_script, "#{fetch :home}/etc/run-rails-#{fetch :application}/log/run"
72
+ run "chmod +x #{fetch :home}/etc/run-rails-#{fetch :application}/run"
73
+ run "chmod +x #{fetch :home}/etc/run-rails-#{fetch :application}/log/run"
74
+ run "ln -nfs #{fetch :home}/etc/run-rails-#{fetch :application} #{fetch :home}/service/rails-#{fetch :application}"
75
+
76
+ end
77
+ end
78
+
79
+ namespace :apache do
80
+ task :setup_reverse_proxy do
81
+ htaccess = <<-EOF
82
+ RewriteEngine On
83
+ RewriteRule ^(.*)$ http://localhost:#{fetch :passenger_port}/$1 [P]
84
+ EOF
85
+ path = fetch(:domain) ? "/var/www/virtual/#{fetch :user}/#{fetch :domain}" : "#{fetch :home}/html"
86
+ run "mkdir -p #{path}"
87
+ put htaccess, "#{path}/.htaccess"
88
+ end
89
+ end
90
+
91
+ namespace :deploy do
92
+ task :start do
93
+ run "svc -u #{fetch :home}/service/rails-#{fetch :application}"
94
+ end
95
+ task :stop do
96
+ run "svc -d #{fetch :home}/service/rails-#{fetch :application}"
97
+ end
98
+ task :restart do
99
+ run "svc -du #{fetch :home}/service/rails-#{fetch :application}"
100
+ end
101
+
102
+ task :symlink_shared do
103
+ run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml"
104
+ end
105
+ end
106
+
107
+ end
@@ -0,0 +1,38 @@
1
+ Capistrano::Configuration.instance.load do
2
+
3
+ # callbacks
4
+ after 'deploy:setup', 'mysql:setup_database_and_config'
5
+
6
+ # custom recipes
7
+ namespace :mysql do
8
+ task :setup_database_and_config do
9
+ my_cnf = capture('cat ~/.my.cnf')
10
+ config = {}
11
+ %w(development production test).each do |env|
12
+
13
+ config[env] = {
14
+ 'adapter' => 'mysql2',
15
+ 'encoding' => 'utf8',
16
+ 'database' => "#{fetch :user}_rails_#{fetch :application}_#{env}",
17
+ 'host' => 'localhost'
18
+ }
19
+
20
+ my_cnf.match(/^user=(\w+)/)
21
+ config[env]['username'] = $1
22
+
23
+ my_cnf.match(/^password=(\w+)/)
24
+ config[env]['password'] = $1
25
+
26
+ my_cnf.match(/^port=(\d+)/)
27
+ config[env]['port'] = $1.to_i
28
+
29
+ run "mysql -e 'CREATE DATABASE IF NOT EXISTS #{config[env]['database']} CHARACTER SET utf8 COLLATE utf8_general_ci;'"
30
+ end
31
+
32
+ run "mkdir -p #{fetch :shared_path}/config"
33
+ put config.to_yaml, "#{fetch :shared_path}/config/database.yml"
34
+
35
+ end
36
+ end
37
+
38
+ end
@@ -1,139 +1,2 @@
1
- require 'capistrano_colors'
2
- require 'rvm/capistrano'
3
- require 'bundler/capistrano'
4
-
5
- def abort_red(msg)
6
- abort " * \e[#{1};31mERROR: #{msg}\e[0m"
7
- end
8
-
9
- Capistrano::Configuration.instance.load do
10
-
11
- # required variables
12
- _cset(:user) { abort_red "Please configure your Uberspace user in config/deploy.rb using 'set :user, <username>'" }
13
- _cset(:repository) { abort_red "Please configure your code repository config/deploy.rb using 'set :repository, <repo uri>'" }
14
-
15
- # optional variables
16
- _cset(:domain) { nil }
17
- _cset(:passenger_port) { rand(61000-32768+1)+32768 } # random ephemeral port
18
-
19
- _cset(:deploy_via) { :remote_cache }
20
- _cset(:git_enable_submodules) { 1 }
21
- _cset(:branch) { 'master' }
22
-
23
- _cset(:keep_releases) { 3 }
24
-
25
- # uberspace presets
26
- set(:deploy_to) { "/var/www/virtual/#{user}/rails/#{application}" }
27
- set(:home) { "/home/#{user}" }
28
- set(:use_sudo) { false }
29
- set(:rvm_type) { :user }
30
- set(:rvm_install_ruby) { :install }
31
- set(:rvm_ruby_string) { "ree@rails-#{application}" }
32
-
33
- ssh_options[:forward_agent] = true
34
- default_run_options[:pty] = true
35
-
36
- # callbacks
37
- before 'deploy:setup', 'rvm:install_rvm'
38
- before 'deploy:setup', 'rvm:install_ruby'
39
- after 'deploy:setup', 'uberspace:setup_svscan'
40
- after 'deploy:setup', 'daemontools:setup_daemon'
41
- after 'deploy:setup', 'apache:setup_reverse_proxy'
42
- after 'deploy:setup', 'mysql:setup_database_and_config'
43
- after 'deploy:update_code', 'deploy:symlink_shared'
44
- after 'deploy', 'deploy:cleanup'
45
-
46
- # custom recipes
47
- namespace :uberspace do
48
- task :setup_svscan do
49
- run 'uberspace-setup-svscan ; echo 0'
50
- end
51
- end
52
-
53
- namespace :daemontools do
54
- task :setup_daemon do
55
- daemon_script = <<-EOF
56
- #!/bin/bash
57
- export HOME=#{fetch :home}
58
- source $HOME/.bash_profile
59
- cd #{fetch :deploy_to}/current
60
- rvm use #{fetch :rvm_ruby_string}
61
- exec bundle exec passenger start -p #{fetch :passenger_port} -e production 2>&1
62
- EOF
63
-
64
- log_script = <<-EOF
65
- #!/bin/sh
66
- exec multilog t ./main
67
- EOF
68
-
69
- run "mkdir -p #{fetch :home}/etc/run-rails-#{fetch :application}"
70
- run "mkdir -p #{fetch :home}/etc/run-rails-#{fetch :application}/log"
71
- put daemon_script, "#{fetch :home}/etc/run-rails-#{fetch :application}/run"
72
- put log_script, "#{fetch :home}/etc/run-rails-#{fetch :application}/log/run"
73
- run "chmod +x #{fetch :home}/etc/run-rails-#{fetch :application}/run"
74
- run "chmod +x #{fetch :home}/etc/run-rails-#{fetch :application}/log/run"
75
- run "ln -nfs #{fetch :home}/etc/run-rails-#{fetch :application} #{fetch :home}/service/rails-#{fetch :application}"
76
-
77
- end
78
- end
79
-
80
- namespace :apache do
81
- task :setup_reverse_proxy do
82
- htaccess = <<-EOF
83
- RewriteEngine On
84
- RewriteRule ^(.*)$ http://localhost:#{fetch :passenger_port}/$1 [P]
85
- EOF
86
- path = fetch(:domain) ? "/var/www/virtual/#{fetch :user}/#{fetch :domain}" : "#{fetch :home}/html"
87
- run "mkdir -p #{path}"
88
- put htaccess, "#{path}/.htaccess"
89
- end
90
- end
91
-
92
- namespace :mysql do
93
- task :setup_database_and_config do
94
- my_cnf = capture('cat ~/.my.cnf')
95
- config = {}
96
- %w(development production test).each do |env|
97
-
98
- config[env] = {
99
- 'adapter' => 'mysql2',
100
- 'encoding' => 'utf8',
101
- 'database' => "#{fetch :user}_rails_#{fetch :application}_#{env}",
102
- 'host' => 'localhost'
103
- }
104
-
105
- my_cnf.match(/^user=(\w+)/)
106
- config[env]['username'] = $1
107
-
108
- my_cnf.match(/^password=(\w+)/)
109
- config[env]['password'] = $1
110
-
111
- my_cnf.match(/^port=(\d+)/)
112
- config[env]['port'] = $1.to_i
113
-
114
- run "mysql -e 'CREATE DATABASE IF NOT EXISTS #{config[env]['database']} CHARACTER SET utf8 COLLATE utf8_general_ci;'"
115
- end
116
-
117
- run "mkdir -p #{fetch :shared_path}/config"
118
- put config.to_yaml, "#{fetch :shared_path}/config/database.yml"
119
-
120
- end
121
- end
122
-
123
- namespace :deploy do
124
- task :start do
125
- run "svc -u #{fetch :home}/service/rails-#{fetch :application}"
126
- end
127
- task :stop do
128
- run "svc -d #{fetch :home}/service/rails-#{fetch :application}"
129
- end
130
- task :restart do
131
- run "svc -du #{fetch :home}/service/rails-#{fetch :application}"
132
- end
133
-
134
- task :symlink_shared do
135
- run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml"
136
- end
137
- end
138
-
139
- end
1
+ require 'uberspacify/base'
2
+ require 'uberspacify/mysql'
@@ -1,3 +1,3 @@
1
1
  module Uberspacify
2
- VERSION = "0.9.0"
2
+ VERSION = "0.9.1"
3
3
  end
metadata CHANGED
@@ -1,185 +1,169 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: uberspacify
3
- version: !ruby/object:Gem::Version
4
- hash: 59
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.1
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 9
9
- - 0
10
- version: 0.9.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Jan Schulz-Hofen
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-08-07 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-08-08 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: capistrano
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 63
29
- segments:
30
- - 2
31
- - 12
32
- - 0
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
33
21
  version: 2.12.0
34
22
  type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: capistrano_colors
38
23
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
40
25
  none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 1
45
- segments:
46
- - 0
47
- - 5
48
- - 5
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 2.12.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: capistrano_colors
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
49
37
  version: 0.5.5
50
38
  type: :runtime
51
- version_requirements: *id002
52
- - !ruby/object:Gem::Dependency
53
- name: rvm-capistrano
54
39
  prerelease: false
55
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 0.5.5
46
+ - !ruby/object:Gem::Dependency
47
+ name: rvm-capistrano
48
+ requirement: !ruby/object:Gem::Requirement
56
49
  none: false
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- hash: 21
61
- segments:
62
- - 1
63
- - 2
64
- - 5
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
65
53
  version: 1.2.5
66
54
  type: :runtime
67
- version_requirements: *id003
68
- - !ruby/object:Gem::Dependency
69
- name: passenger
70
55
  prerelease: false
71
- requirement: &id004 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
72
57
  none: false
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- hash: 25
77
- segments:
78
- - 3
79
- - 0
80
- - 15
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.2.5
62
+ - !ruby/object:Gem::Dependency
63
+ name: passenger
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
81
69
  version: 3.0.15
82
70
  type: :runtime
83
- version_requirements: *id004
84
- - !ruby/object:Gem::Dependency
85
- name: rack
86
71
  prerelease: false
87
- requirement: &id005 !ruby/object:Gem::Requirement
72
+ version_requirements: !ruby/object:Gem::Requirement
88
73
  none: false
89
- requirements:
90
- - - ">="
91
- - !ruby/object:Gem::Version
92
- hash: 5
93
- segments:
94
- - 1
95
- - 4
96
- - 1
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: 3.0.15
78
+ - !ruby/object:Gem::Dependency
79
+ name: rack
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
97
85
  version: 1.4.1
98
86
  type: :runtime
99
- version_requirements: *id005
100
- - !ruby/object:Gem::Dependency
101
- name: daemon_controller
102
87
  prerelease: false
103
- requirement: &id006 !ruby/object:Gem::Requirement
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 1.4.1
94
+ - !ruby/object:Gem::Dependency
95
+ name: daemon_controller
96
+ requirement: !ruby/object:Gem::Requirement
104
97
  none: false
105
- requirements:
106
- - - ">="
107
- - !ruby/object:Gem::Version
108
- hash: 23
109
- segments:
110
- - 1
111
- - 0
112
- - 0
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
113
101
  version: 1.0.0
114
102
  type: :runtime
115
- version_requirements: *id006
116
- - !ruby/object:Gem::Dependency
117
- name: mysql2
118
103
  prerelease: false
119
- requirement: &id007 !ruby/object:Gem::Requirement
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: 1.0.0
110
+ - !ruby/object:Gem::Dependency
111
+ name: mysql2
112
+ requirement: !ruby/object:Gem::Requirement
120
113
  none: false
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- hash: 5
125
- segments:
126
- - 0
127
- - 3
128
- - 11
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
129
117
  version: 0.3.11
130
118
  type: :runtime
131
- version_requirements: *id007
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: 0.3.11
132
126
  description: Deploy Rails apps on Uberspace
133
- email:
127
+ email:
134
128
  - jan@launchco.com
135
129
  executables: []
136
-
137
130
  extensions: []
138
-
139
131
  extra_rdoc_files: []
140
-
141
- files:
132
+ files:
142
133
  - .gitignore
143
134
  - Gemfile
144
135
  - LICENSE
145
136
  - README.md
146
137
  - Rakefile
147
138
  - lib/uberspacify.rb
139
+ - lib/uberspacify/base.rb
140
+ - lib/uberspacify/mysql.rb
148
141
  - lib/uberspacify/recipes.rb
149
142
  - lib/uberspacify/version.rb
150
143
  - uberspacify.gemspec
151
- homepage: ""
144
+ homepage: ''
152
145
  licenses: []
153
-
154
146
  post_install_message:
155
147
  rdoc_options: []
156
-
157
- require_paths:
148
+ require_paths:
158
149
  - lib
159
- required_ruby_version: !ruby/object:Gem::Requirement
150
+ required_ruby_version: !ruby/object:Gem::Requirement
160
151
  none: false
161
- requirements:
162
- - - ">="
163
- - !ruby/object:Gem::Version
164
- hash: 3
165
- segments:
166
- - 0
167
- version: "0"
168
- required_rubygems_version: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - ! '>='
154
+ - !ruby/object:Gem::Version
155
+ version: '0'
156
+ required_rubygems_version: !ruby/object:Gem::Requirement
169
157
  none: false
170
- requirements:
171
- - - ">="
172
- - !ruby/object:Gem::Version
173
- hash: 3
174
- segments:
175
- - 0
176
- version: "0"
158
+ requirements:
159
+ - - ! '>='
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
177
162
  requirements: []
178
-
179
163
  rubyforge_project:
180
164
  rubygems_version: 1.8.24
181
165
  signing_key:
182
166
  specification_version: 3
183
- summary: Uberspacify helps you deploy a Ruby on Rails app on Uberspace, a popular German shared hosting provider.
167
+ summary: Uberspacify helps you deploy a Ruby on Rails app on Uberspace, a popular
168
+ German shared hosting provider.
184
169
  test_files: []
185
-