capistrano-exts 1.13.2 → 1.14.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/.gitignore CHANGED
@@ -2,3 +2,4 @@
2
2
  .bundle
3
3
  Gemfile.lock
4
4
  pkg/*
5
+ .rvmrc
data/README.md CHANGED
@@ -7,6 +7,8 @@ doing by hand far too often. It provides many helpful post-deployment tasks to
7
7
  help you import/export database and contents as well as sync one stage with
8
8
  another.
9
9
 
10
+ [![Click here to lend your support to: Open Source Projects and make a donation at www.pledgie.com !](http://www.pledgie.com/campaigns/16123.png?skin_name=chrome)](http://www.pledgie.com/campaigns/16123)
11
+
10
12
  # Installation
11
13
 
12
14
  Install the gem
@@ -26,19 +26,17 @@ EOD
26
26
  s.require_paths = ["lib"]
27
27
 
28
28
  # Run-time dependencies
29
- s.add_dependency('capistrano', '~>2.8.0')
30
- s.add_dependency('capistrano_colors', '~>0.5.5')
31
- s.add_dependency('i18n', '~>0.6.0')
32
- s.add_dependency('activesupport', '~>3.1.0')
29
+ s.add_dependency 'capistrano'
30
+ s.add_dependency 'capistrano_colors'
31
+ s.add_dependency 'i18n'
32
+ s.add_dependency 'activesupport', '~>3.2.3'
33
33
 
34
34
  # Development dependencies
35
- s.add_development_dependency('guard', '~>0.6.2')
36
- s.add_development_dependency('guard-bundler', '~>0.1.3')
37
- s.add_development_dependency('guard-rspec', '~>0.4.3')
35
+ s.add_development_dependency 'guard'
36
+ s.add_development_dependency 'guard-bundler'
37
+ s.add_development_dependency 'guard-rspec'
38
38
 
39
39
  # Development / Test dependencies
40
- s.add_development_dependency('rspec', '~>2.6.0')
41
- # s.add_development_dependency('mocha', '~>0.2.12')
42
- # s.add_development_dependency('factory_girl', '~>2.0.5')
43
- # s.add_development_dependency('faker19', '~>1.0.5')
44
- end
40
+ s.add_development_dependency 'rspec'
41
+ s.add_development_dependency 'rake'
42
+ end
@@ -17,8 +17,13 @@ Capistrano::Configuration.instance(:must_exist).load do
17
17
  end
18
18
 
19
19
  namespace :contao do
20
- desc "[internal] Setup contao shared contents"
20
+ desc "[internal] Setup contao"
21
21
  task :setup, :roles => :app, :except => { :no_release => true } do
22
+ # Empty task, the rest should hook to it
23
+ end
24
+
25
+ desc "[internal] Setup contao shared contents"
26
+ task :setup_shared_folder, :roles => :app, :except => { :no_release => true } do
22
27
  shared_path = fetch :shared_path
23
28
  run <<-CMD
24
29
  #{try_sudo} mkdir -p #{shared_path}/logs &&
@@ -35,29 +40,31 @@ Capistrano::Configuration.instance(:must_exist).load do
35
40
  desc "[internal] Setup contao's localconfig"
36
41
  task :setup_localconfig, :roles => :app, :except => { :no_release => true } do
37
42
  localconfig_php_config_path = "#{fetch :shared_path}/config/public_system_config_localconfig.php"
38
- unless remote_file_exists?(localconfig_php_config_path)
39
- on_rollback { run "rm -f #{localconfig_php_config_path}" }
40
-
41
- localconfig = File.read("public/system/config/localconfig.php.sample")
42
- mysql_credentials = fetch :mysql_credentials
43
- mysql_db_name = fetch :mysql_db_name
44
-
45
- # localconfig
46
- if mysql_credentials.blank?
47
- logger.info "WARNING: The mysql credential file can't be found, localconfig has just been copied from the sample file"
48
- end
49
-
50
- # Add MySQL credentials
51
- unless localconfig.blank? or mysql_credentials.blank?
52
- localconfig.gsub!(/#DB_HOST#/, mysql_credentials[:host])
53
- localconfig.gsub!(/#DB_USER#/, mysql_credentials[:user])
54
- localconfig.gsub!(/#DB_PASS#/, mysql_credentials[:pass])
55
- localconfig.gsub!(/#DB_NAME#/, mysql_db_name)
56
- end
57
-
58
- put localconfig, localconfig_php_config_path
59
- else
60
- logger.info "WARNING: The file '#{localconfig_php_config_path}' already exists, not overwriting."
43
+ on_rollback { run "rm -f #{localconfig_php_config_path}" }
44
+
45
+ localconfig = File.read("config/examples/localconfig.php.erb")
46
+ mysql_credentials = fetch :mysql_credentials
47
+
48
+ mysql_host = mysql_credentials[:host]
49
+ mysql_user = mysql_credentials[:user]
50
+ mysql_password = mysql_credentials[:pass]
51
+ mysql_database = fetch :mysql_db_name
52
+ contao_env = :production
53
+
54
+ put ERB.new(localconfig).result(binding), localconfig_php_config_path
55
+ end
56
+
57
+ desc "[internal] Link files from contao to inside public folder"
58
+ task :link_contao_files, :roles => :app, :except => { :no_release => true } do
59
+ files = exhaustive_list_of_files_to_link("#{fetch :latest_release}/contao", "#{fetch :latest_release}/public")
60
+ commands = files.map do |list|
61
+ "#{try_sudo} ln -nsf #{list[0]} #{list[1]}"
62
+ end
63
+
64
+ begin
65
+ run commands.join(';')
66
+ rescue Capistrano::CommandError
67
+ abort "Unable to create to link contao files"
61
68
  end
62
69
  end
63
70
 
@@ -76,14 +83,36 @@ Capistrano::Configuration.instance(:must_exist).load do
76
83
  #{try_sudo} ln -nsf #{shared_path}/logs #{latest_release}/public/system/logs
77
84
  CMD
78
85
  end
86
+
87
+ desc "Upload contao assets"
88
+ task :upload_assets, :roles => :app, :except => { :no_release => true } do
89
+ upload("public/resources", "#{fetch :latest_release}/public/resources", :via => :scp, :recursive => true)
90
+ end
91
+
92
+ desc "[internal] Generate production assets"
93
+ task :generate_production_assets, :roles => :app, :except => { :no_release => true } do
94
+ run_locally "bundle exec rake CONTAO_ENV=production assets:precompile"
95
+ end
96
+
97
+ desc "[internal] Generate development assets"
98
+ task :generate_development_assets, :roles => :app, :except => { :no_release => true } do
99
+ run_locally "bundle exec rake assets:precompile"
100
+ end
79
101
  end
80
102
 
81
103
  # Dependencies
82
104
  after "deploy:setup", "contao:setup"
105
+ after "contao:setup", "contao:setup_shared_folder"
83
106
  after "contao:setup", "contao:setup_localconfig"
84
- after "deploy:finalize_update", "contao:fix_links"
107
+ after "deploy:finalize_update", "contao:link_contao_files"
108
+ after "contao:link_contao_files", "contao:fix_links"
109
+
110
+ # Assets
111
+ after "contao:link_contao_files", "contao:upload_assets"
112
+ before "contao:upload_assets", "contao:generate_production_assets"
113
+ after "contao:upload_assets", "contao:generate_development_assets"
85
114
 
86
115
  # Mysql Credentials
87
116
  before "contao:setup_localconfig", "mysql:credentials"
88
117
  before "contao:setup_db", "mysql:credentials"
89
- end
118
+ end
@@ -30,6 +30,39 @@ Capistrano::Configuration.instance(:must_exist).load do
30
30
  end
31
31
  end
32
32
 
33
+ # Return an array of arrays of files to link
34
+ #
35
+ # @param [String] Absolute path to folder from which to link
36
+ # @param [String] Absolute path to folder to which to link
37
+ # @return [Array]
38
+ def exhaustive_list_of_files_to_link(from, to)
39
+ script = <<-END
40
+ exhaustive_list_of_files_to_link() {
41
+ files="";
42
+
43
+ for f in `ls -A1 ${1}`; do
44
+ file="${2}/${f}";
45
+ f="${1}/${f}";
46
+ if [[ -e "${file}" ]]; then
47
+ files="${files} `exhaustive_list_of_files_to_link ${f} ${file}`";
48
+ else
49
+ files="${files} ${f}:${file}";
50
+ fi;
51
+ done;
52
+ echo "${files}";
53
+ };
54
+ END
55
+
56
+ script << "exhaustive_list_of_files_to_link '#{from}' '#{to}';"
57
+
58
+ begin
59
+ files = capture(script).strip.split(' ')
60
+ files.map {|f| f.split(':')}
61
+ rescue Capistrano::CommandError
62
+ abort "Unable to get files list"
63
+ end
64
+ end
65
+
33
66
  def link_files(path, files = {})
34
67
  files.each do |f|
35
68
  file_name = f.dup.gsub(/\//, '_')
@@ -39,10 +72,16 @@ Capistrano::Configuration.instance(:must_exist).load do
39
72
  #{try_sudo} cp -a #{latest_release}/#{f} #{path}/#{file_name}
40
73
  CMD
41
74
  rescue Capistrano::CommandError
42
- run <<-CMD
43
- #{try_sudo} touch #{path}/#{file_name}
44
- CMD
45
- logger.info "WARNING: You should edit '#{path}/#{file_name}' or re-create it as a folder if that's your intention."
75
+ if remote_file_exists?("#{latest_release}/#{f}.default")
76
+ run <<-CMD
77
+ #{try_sudo} cp #{latest_release}/#{f}.default #{path}/#{file_name}
78
+ CMD
79
+ else
80
+ run <<-CMD
81
+ #{try_sudo} touch #{path}/#{file_name}
82
+ CMD
83
+ logger.info "WARNING: You should edit '#{path}/#{file_name}' or re-create it as a folder if that's your intention."
84
+ end
46
85
  end
47
86
  end
48
87
 
@@ -151,4 +190,4 @@ password: #{credentials[:pass]}
151
190
  def try_bundle_exec
152
191
  "bundle exec"
153
192
  end
154
- end
193
+ end
@@ -103,7 +103,7 @@ Capistrano::Configuration.instance(:must_exist).load do
103
103
  put result, "#{fetch :shared_path}/__system__/maintenance/index.html", :mode => 0644
104
104
  end
105
105
 
106
- if fetch(:web_server_app) == :apache
106
+ if !exists?(:web_server_app) || fetch(:web_server_app) == :apache
107
107
  warn <<-EOHTACCESS
108
108
 
109
109
  # Please add something like this to your site's htaccess to redirect users to the maintenance page.
@@ -2,11 +2,11 @@ module Capistrano
2
2
  module Extensions
3
3
  module Version #:nodoc:
4
4
  MAJOR = 1
5
- MINOR = 13
6
- TINY = 2
5
+ MINOR = 14
6
+ TINY = 1
7
7
 
8
8
  ARRAY = [MAJOR, MINOR, TINY]
9
9
  STRING = ARRAY.join(".")
10
10
  end
11
11
  end
12
- end
12
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-exts
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.2
4
+ version: 1.14.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,96 +9,152 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-09-22 00:00:00.000000000 Z
12
+ date: 2012-05-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: capistrano
16
- requirement: &2152862420 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ~>
19
+ - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: 2.8.0
21
+ version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2152862420
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: capistrano_colors
27
- requirement: &2152857600 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
- - - ~>
35
+ - - ! '>='
31
36
  - !ruby/object:Gem::Version
32
- version: 0.5.5
37
+ version: '0'
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *2152857600
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: i18n
38
- requirement: &2157929640 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
- - - ~>
51
+ - - ! '>='
42
52
  - !ruby/object:Gem::Version
43
- version: 0.6.0
53
+ version: '0'
44
54
  type: :runtime
45
55
  prerelease: false
46
- version_requirements: *2157929640
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: activesupport
49
- requirement: &2157929180 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ~>
53
68
  - !ruby/object:Gem::Version
54
- version: 3.1.0
69
+ version: 3.2.3
55
70
  type: :runtime
56
71
  prerelease: false
57
- version_requirements: *2157929180
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 3.2.3
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: guard
60
- requirement: &2157928720 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
- - - ~>
83
+ - - ! '>='
64
84
  - !ruby/object:Gem::Version
65
- version: 0.6.2
85
+ version: '0'
66
86
  type: :development
67
87
  prerelease: false
68
- version_requirements: *2157928720
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: guard-bundler
71
- requirement: &2157928260 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
72
97
  none: false
73
98
  requirements:
74
- - - ~>
99
+ - - ! '>='
75
100
  - !ruby/object:Gem::Version
76
- version: 0.1.3
101
+ version: '0'
77
102
  type: :development
78
103
  prerelease: false
79
- version_requirements: *2157928260
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
80
110
  - !ruby/object:Gem::Dependency
81
111
  name: guard-rspec
82
- requirement: &2157927800 !ruby/object:Gem::Requirement
112
+ requirement: !ruby/object:Gem::Requirement
83
113
  none: false
84
114
  requirements:
85
- - - ~>
115
+ - - ! '>='
86
116
  - !ruby/object:Gem::Version
87
- version: 0.4.3
117
+ version: '0'
88
118
  type: :development
89
119
  prerelease: false
90
- version_requirements: *2157927800
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
91
126
  - !ruby/object:Gem::Dependency
92
127
  name: rspec
93
- requirement: &2157927340 !ruby/object:Gem::Requirement
128
+ requirement: !ruby/object:Gem::Requirement
94
129
  none: false
95
130
  requirements:
96
- - - ~>
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: rake
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
97
148
  - !ruby/object:Gem::Version
98
- version: 2.6.0
149
+ version: '0'
99
150
  type: :development
100
151
  prerelease: false
101
- version_requirements: *2157927340
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
102
158
  description: ! 'Capistrano exts is a set of helper tasks to help with the initial
103
159
  server
104
160
 
@@ -198,9 +254,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
198
254
  - - ! '>='
199
255
  - !ruby/object:Gem::Version
200
256
  version: '0'
257
+ segments:
258
+ - 0
259
+ hash: 3949251139176994680
201
260
  requirements: []
202
261
  rubyforge_project:
203
- rubygems_version: 1.8.10
262
+ rubygems_version: 1.8.24
204
263
  signing_key:
205
264
  specification_version: 3
206
265
  summary: Set of helper tasks to help with the initial server configuration and application