capistrano-exts 1.13.2 → 1.14.1

Sign up to get free protection for your applications and to get access to all the features.
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