ms_deploy 0.0.2 → 0.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.
data/README.md ADDED
@@ -0,0 +1,12 @@
1
+ # What?
2
+
3
+ * capistrano deployment task for my projects
4
+
5
+ # Why?
6
+
7
+ * dry
8
+
9
+ # Todo
10
+
11
+ * implement onrollback
12
+ * gem 'cap-recipes'
@@ -0,0 +1,110 @@
1
+
2
+ set :application, ''
3
+ set :domain, ''
4
+ set :server_domain, ''
5
+
6
+ set :user, 'deploy'
7
+ set :group, 'deploy'
8
+
9
+ set :ruby_version, "ruby-1.9.3.rc1"
10
+ set :rails_root, File.expand_path('../../', __FILE__)
11
+
12
+ set :default_environment, {
13
+ 'PATH' => "/home/#{user}/.rbenv/shims:/home/#{user}/.rbenv/bin:$PATH"
14
+ }
15
+
16
+ set :rails_env, :production # use 'stage' to differ between stage environments
17
+ set :keep_releases, 10 # default
18
+ set :use_sudo, false
19
+
20
+ server domain, :web, :app, :db, :primary => true
21
+
22
+ set :branch do
23
+ ENV['BRANCH'] || 'xxx'
24
+ end
25
+
26
+ # Multistage settings
27
+ #set :stage_dir, File.dirname(__FILE__) + '/deploy/stages'
28
+ #set :default_stage, "vagrant"
29
+ #
30
+ #require 'capistrano/ext/multistage'
31
+
32
+ # database
33
+ set :db_name, ''
34
+ set :db_user_name, ''
35
+ set :db_user_password, ''
36
+
37
+ set :scm, :git
38
+ set :repository, '.git'
39
+ set :git_enable_submodules, 1
40
+
41
+ # set deployment strategy
42
+ set :deploy_via, :remote_cache
43
+ set :copy_exclude, %w(.git .svn .DS_Store test doc .gitkeep)
44
+
45
+ # :forward_agent allows us to avoid using and distributing a deploy key.
46
+ # On problems run 'ssh-add' locally
47
+ # In your /etc/ssh/ssh_config or ~/.ssh/config you need to have ForwardAgent enabled for this to work.
48
+ set :ssh_options, { :port => fetch(:ssh_port, 22), :forward_agent => true, :paranoid => true }
49
+
50
+ default_run_options[:pty] = true
51
+
52
+ # set application folder
53
+ set(:deploy_to) { "/var/projects/#{application}/#{fetch(:stage, 'production')}" }
54
+
55
+ require 'ms_deploy/recipes/nginx'
56
+ require 'ms_deploy/recipes/bundler'
57
+ require 'ms_deploy/recipes/deploy/symlink'
58
+ require 'ms_deploy/recipes/deploy/unicorn'
59
+ require 'ms_deploy/recipes/deploy/setup'
60
+ require 'ms_deploy/recipes/deploy/assets'
61
+
62
+ before 'deploy:setup', 'deploy:prepare:database';
63
+ after 'deploy:update", "deploy:cleanup'
64
+
65
+ set(:shared_directories_to_create) {
66
+ [
67
+ "#{shared_path}/vendor/bundle",
68
+ "#{shared_path}/vendor/cache",
69
+ "#{shared_path}/uploads"
70
+ ]
71
+ }
72
+
73
+ set(:shared_directories_to_link) {
74
+ {
75
+ "#{shared_path}/bundle/" => "#{release_path}/vendor/bundle",
76
+ "#{shared_path}/solr/" => "#{release_path}/solr"
77
+ }
78
+ }
79
+
80
+ set(:directories_to_create) {
81
+ [
82
+ "#{release_path}/tmp",
83
+ "#{release_path}/vendor"
84
+ ]
85
+ }
86
+
87
+ set(:files_to_link) {
88
+ {
89
+ "#{shared_path}/config/config.production.yml" => "#{release_path}/config/config.local.yml",
90
+ "#{shared_path}/config/unicorn.production.rb" => "#{release_path}/config/unicorn.production.rb"
91
+ }
92
+ }
93
+
94
+ set(:config_file_to_setup) {
95
+ [
96
+ "config.production.yml",
97
+ "unicorn.production.rb"
98
+ ]
99
+ }
100
+
101
+ set(:files_to_delete) {
102
+ [
103
+ ]
104
+ }
105
+
106
+ set(:chmods_to_set) {
107
+ {
108
+ # "#{shared_path}/data/pdf" => 755
109
+ }
110
+ }
@@ -17,7 +17,7 @@ Capistrano::Configuration.instance.load do
17
17
 
18
18
  namespace :bundler do
19
19
  task :install_gem do
20
- run "cd #{current_path} && gem install bundler --pre --no-ri --no-rdoc"
20
+ run "cd #{release_path} && gem install bundler --pre --no-ri --no-rdoc"
21
21
  end
22
22
  end
23
23
 
@@ -2,14 +2,11 @@ Capistrano::Configuration.instance.load do
2
2
 
3
3
  namespace :deploy do
4
4
  namespace :prepare do
5
- task :create_config do
5
+ task :create_config_files do
6
6
  run "mkdir -p #{shared_path}/config/"
7
- put(File.read(database_config_file), "#{shared_path}/config/#{fetch(:configuration_file_prefix, 'config')}.production.yml", :via => :scp)
8
- end
9
-
10
- task :create_database_config do
11
- run "mkdir -p #{shared_path}/config/"
12
- put(File.read(database_config_file), "#{shared_path}/config/database.yml", :via => :scp)
7
+ config_file_to_setup.each do |config_file|
8
+ put(File.read(config_file_path(config_file)), "#{shared_path}/config/#{config_file}", :via => :scp)
9
+ end
13
10
  end
14
11
 
15
12
  desc "Set up shared directory structure"
@@ -17,21 +14,56 @@ Capistrano::Configuration.instance.load do
17
14
  shared_directories_to_create.each { |directory| run "mkdir -p #{directory}" }
18
15
  end
19
16
 
20
- #desc "Rebuilds css and js asset packages"
21
- #task :rebuild_asset_cache, :roles => :app do
22
- # run "cd #{current_path} && #{rake_path} RAILS_ENV=#{fetch(:rails_env, "production")} asset:packager:build_all"
23
- #end
17
+ task :database do
18
+ set :db_admin_user, 'root' unless fetch(:db_admin_user, nil)
19
+ set :db_admin_password, Capistrano::CLI.password_prompt("Type your mysql password for user '#{db_admin_user}' (not set if empty): ") unless fetch(:db_admin_password, nil)
20
+ set :db_name, application.gsub(/\W+/, '')[0..5] + '_' + rails_env.to_s unless fetch(:db_name, nil)
21
+ set :db_user_name, application unless fetch(:db_user_name, nil)
22
+ set :db_user_password, '' unless fetch(:db_user_password, nil)
23
+
24
+ unless db_admin_password.to_s.empty?
25
+ unless database_exits?
26
+ create_database
27
+ end
28
+ setup_database_permissions
29
+ end
30
+ end
24
31
  end
25
32
  end
26
33
 
27
- before :"deploy:setup", :"deploy:prepare:create_config";
28
- before :"deploy:setup", :"deploy:prepare:create_database_config";
34
+ before :"deploy:setup", :"deploy:prepare:create_config_files";
29
35
  before :"deploy:setup", :"deploy:prepare:create_shared_folders";
30
36
 
31
37
  end
32
38
 
33
- def database_config_file
34
- config_file = "#{rails_root}/config/#{fetch(:configuration_file_prefix, 'config')}.#{fetch(:stage, 'production')}.yml"
35
- raise "No config file '#{config_file}' for '#{fetch(:stage, 'production')}'" unless File.exists? config_file
39
+ def config_file_path(config_file_name)
40
+ config_file = "#{rails_root}/config/#{config_file_name}"
41
+ raise "No config file '#{config_file}'" unless File.exists? config_file
36
42
  config_file
37
43
  end
44
+
45
+ def database_exits?
46
+ exists = false
47
+
48
+ run "mysql --user=#{db_admin_user} --password=#{db_admin_password} --execute=\"show databases;\"" do |channel, stream, data|
49
+ exists = exists || data.include?(db_name)
50
+ end
51
+
52
+ exists
53
+ end
54
+
55
+ def create_database
56
+ create_sql = <<-SQL
57
+ CREATE DATABASE #{db_name};
58
+ SQL
59
+
60
+ run "mysql --user=#{db_admin_user} --password=#{db_admin_password} --execute=\"#{create_sql}\""
61
+ end
62
+
63
+ def setup_database_permissions
64
+ grant_sql = <<-SQL
65
+ GRANT ALL PRIVILEGES ON #{db_name}.* TO #{db_user_name}@localhost IDENTIFIED BY '#{db_user_password}';
66
+ SQL
67
+
68
+ run "mysql --user=#{db_admin_user} --password=#{db_admin_password} --execute=\"#{grant_sql}\""
69
+ end
@@ -19,7 +19,6 @@ Capistrano::Configuration.instance.load do
19
19
  end
20
20
  end
21
21
 
22
- before 'deploy:finalize_update', 'deploy:symlink'
23
22
  after 'deploy:symlink', 'deploy:symlink_dependencies'
24
23
 
25
24
  end
@@ -2,7 +2,7 @@ require "ms_deploy/render"
2
2
 
3
3
  Capistrano::Configuration.instance.load do
4
4
 
5
- namespace :deploy do
5
+ namespace :service do
6
6
  namespace :nginx do
7
7
  desc <<-DESC
8
8
  Starts the nginx web-server.
@@ -30,7 +30,7 @@ Capistrano::Configuration.instance.load do
30
30
 
31
31
  task :install do
32
32
  template_path = File.expand_path('../../templates/vhost.erb', __FILE__)
33
- vars = {'application'=> application, 'project_root' => deploy_to + '/current', 'server_name' => server_name}
33
+ vars = {'application'=> application, 'project_root' => deploy_to + '/current', 'domain' => domain}
34
34
  config_path = "#{shared_path}/config/#{application}_vhost.conf"
35
35
 
36
36
  put(render_erb_template(template_path, vars), config_path)
@@ -44,6 +44,6 @@ Capistrano::Configuration.instance.load do
44
44
  end
45
45
  end
46
46
 
47
- after :"deploy:setup", :"deploy:nginx:install";
47
+ after :"deploy:setup", :"service:nginx:install";
48
48
 
49
49
  end
@@ -16,7 +16,7 @@ upstream <%= application %>_server {
16
16
  server {
17
17
 
18
18
  listen 443;
19
- server_name <%= server_name %>;
19
+ server_name <%= domain %>;
20
20
 
21
21
  ssl on;
22
22
  ssl_certificate /usr/local/nginx/conf/cert.pem;
@@ -16,7 +16,7 @@ upstream <%= application %>_server {
16
16
  server {
17
17
 
18
18
  listen 80;
19
- server_name <%= server_name %>;
19
+ server_name <%= domain %>;
20
20
 
21
21
  client_max_body_size 4G;
22
22
 
@@ -1,3 +1,3 @@
1
1
  module MsDeploy
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/ms_deploy.gemspec CHANGED
@@ -18,7 +18,5 @@ Gem::Specification.new do |gem|
18
18
  gem.add_dependency('capistrano-ext')
19
19
  gem.add_dependency('erubis')
20
20
 
21
- #gem 'cap-recipes', '>= 0.3.36', :require => false # http://github.com/nesquena/cap-recipes
22
-
23
21
  gem.version = MsDeploy::VERSION
24
22
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ms_deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-12-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: capistrano
16
- requirement: &75236870 !ruby/object:Gem::Requirement
16
+ requirement: &79221250 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *75236870
24
+ version_requirements: *79221250
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: capistrano-ext
27
- requirement: &75236330 !ruby/object:Gem::Requirement
27
+ requirement: &79220690 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *75236330
35
+ version_requirements: *79220690
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: erubis
38
- requirement: &75333520 !ruby/object:Gem::Requirement
38
+ requirement: &79220470 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *75333520
46
+ version_requirements: *79220470
47
47
  description: capistrano deployment task for my projects
48
48
  email:
49
49
  - michael.schiller@gmx.de
@@ -53,22 +53,22 @@ extra_rdoc_files: []
53
53
  files:
54
54
  - .gitignore
55
55
  - Gemfile
56
+ - README.md
56
57
  - Rakefile
57
- - TODO
58
+ - lib/examples/deploy.rb
58
59
  - lib/ms_deploy.rb
59
60
  - lib/ms_deploy/recipes/bundler.rb
60
61
  - lib/ms_deploy/recipes/deploy/assets.rb
61
- - lib/ms_deploy/recipes/deploy/nginx.rb
62
62
  - lib/ms_deploy/recipes/deploy/setup.rb
63
63
  - lib/ms_deploy/recipes/deploy/symlink.rb
64
64
  - lib/ms_deploy/recipes/deploy/unicorn.rb
65
65
  - lib/ms_deploy/recipes/info.rb
66
- - lib/ms_deploy/recipes/mysql.rb
66
+ - lib/ms_deploy/recipes/nginx.rb
67
67
  - lib/ms_deploy/recipes/redis.rb
68
- - lib/ms_deploy/recipes/templates/ssl_vhost.erb
69
- - lib/ms_deploy/recipes/templates/vhost.erb
70
68
  - lib/ms_deploy/recipes/whenever.rb
71
69
  - lib/ms_deploy/render.rb
70
+ - lib/ms_deploy/templates/ssl_vhost.erb
71
+ - lib/ms_deploy/templates/vhost.erb
72
72
  - lib/ms_deploy/version.rb
73
73
  - ms_deploy.gemspec
74
74
  homepage: https://github.com/mschiller/ms_deploy
data/TODO DELETED
@@ -1,3 +0,0 @@
1
- # Todo
2
-
3
- * implement onrollback
@@ -1,48 +0,0 @@
1
- require 'yaml'
2
-
3
- Capistrano::Configuration.instance.load do
4
-
5
- namespace :deploy do
6
- namespace :prepare do
7
- task :database do
8
- set :db_admin_user, 'root' unless fetch(:db_admin_user, nil)
9
- set :db_admin_password, Capistrano::CLI.password_prompt("Type your mysql password for user '#{db_admin_user}': ") unless fetch(:db_admin_password, nil)
10
- set :db_name, application.gsub(/\W+/, '')[0..5] + '_' + rails_env.to_s unless fetch(:db_name, nil)
11
- set :db_user_name, 'root' unless fetch(:db_user_name, nil)
12
- set :db_user_password, '' unless fetch(:db_user_password, nil)
13
-
14
- unless database_exits?
15
- create_database
16
- end
17
- setup_database_permissions
18
- end
19
- end
20
- end
21
-
22
- def database_exits?
23
- exists = false
24
-
25
- run "mysql --user=#{db_admin_user} --password=#{db_admin_password} --execute=\"show databases;\"" do |channel, stream, data|
26
- exists = exists || data.include?(db_name)
27
- end
28
-
29
- exists
30
- end
31
-
32
- def create_database
33
- create_sql = <<-SQL
34
- CREATE DATABASE #{db_name};
35
- SQL
36
-
37
- run "mysql --user=#{db_admin_user} --password=#{db_admin_password} --execute=\"#{create_sql}\""
38
- end
39
-
40
- def setup_database_permissions
41
- grant_sql = <<-SQL
42
- GRANT ALL PRIVILEGES ON #{db_name}.* TO #{db_user_name}@localhost IDENTIFIED BY '#{db_user_password}';
43
- SQL
44
-
45
- run "mysql --user=#{db_admin_user} --password=#{db_admin_password} --execute=\"#{grant_sql}\""
46
- end
47
-
48
- end