capistrano-forkcms 1.0.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a8b4c0990c9f4473ff2a104e47f03b573126778c
4
- data.tar.gz: acf272f5407fd07c42b18be94d0c8ce60f059a2f
3
+ metadata.gz: 0adbc416fef6b18cf432dfa74924a7e36711eb52
4
+ data.tar.gz: 724dba6b24dfa9d04dd29bf665559103966881b3
5
5
  SHA512:
6
- metadata.gz: 129fb6075d179fbbdc02faf22d5e50867576360d3c629ee6b08cf598f82b4d8f2dfe8923c737b83223aca7f0976b913132313b64cbfed74031a2c338679380df
7
- data.tar.gz: c64f1b054c70d3124c8b97e8790ac1f8b078c2bd624112e0c2073516cade4a8d56b09c184b06ea921db71a3eb57376c2bed16afcd2908a55be56bfd4ddbda76c
6
+ metadata.gz: 294dc28ba5f80776698813de6918fca12d6ac2d84e6bafe7576c486909a8667c14cc89856dc1386e42ea7a33b3344d518f4595ffe7af200437085c5fd5d49b21
7
+ data.tar.gz: 43c71454a43298214d5b04effcd07ac4e30d0a9aa0617cc2c2374ee2306f69a1a501540c993471b68b2285a99608d50a59c268793dc5ee137b07da1111e2d130
data/Gemfile CHANGED
@@ -5,3 +5,4 @@ gemspec
5
5
 
6
6
  gem 'capistrano', '~> 3.1'
7
7
  gem 'capistrano-composer', '~> 0.0.6'
8
+ gem 'capistrano-cachetool', '~> 1.0.0'
data/README.md CHANGED
@@ -27,6 +27,7 @@ Require the module in your Capfile:
27
27
  The plugin comes with two tasks:
28
28
 
29
29
  * `forkcms:configure:composer`, which will configure the `capistrano/composer` plugin.
30
+ * `forkcms:opcache:reset`, which will reset the opcache.
30
31
  * `forkcms:symlink:document_root`, which will link the document_root to the current-folder.
31
32
 
32
33
  But you won't need any of them as everything is wired automagically.
@@ -37,7 +38,11 @@ But you won't need any of them as everything is wired automagically.
37
38
  Configuration options:
38
39
 
39
40
  * `:php_bin_custom_path`, this will allow you to configure a custom PHP binary, the fallback is `php`.
40
-
41
+ * `:opcache_reset_strategy`, the reset strategy. Possible options: file, fcgi
42
+ * `opcache_reset_fcgi_connection_string`, the fcgi-connection string used for the [cachetool](http://gordalina.github.io/cachetool/).
43
+ required when `:opcache_reset_strategy` is `fcgi`.
44
+ * `opcache_reset_base_url`, the public url of your website. Required when `:opcache_reset_strategy` is `file`
45
+
41
46
 
42
47
  ## How to use with a fresh Fork install
43
48
 
@@ -78,10 +83,18 @@ set :keep_releases, 3
78
83
 
79
84
  ```
80
85
  server "$your-server-hostname", user: "sites", roles: %w{app db web}
81
- set :deploy_to, "$your-path-where-everything-should-be-deployed"
82
- set :document_root, "$your-document-root"
86
+ set :deploy_to, "$your-path-where-everything-should-be-deployed" # eg: /home/johndoe/apps/website
87
+ set :document_root, "$your-document-root" # eg: /var/www
88
+
89
+ set :opcache_reset_strategy, "fcgi"
90
+ set :opcache_reset_fcgi_connection_string, "$your-php-fpm-socket-or-connection-string" # eg: /var/run/php_71_fpm_sites.sock
91
+
92
+ # or if you are not using FCGI/FPM
93
+ #set :opcache_reset_strategy, "file"
94
+ #set :opcache_reset_base_url, "$your-public-url" # eg: "http://www.fork-cms.com"
95
+
83
96
  ```
84
-
97
+
85
98
 
86
99
  ## Contributing
87
100
 
@@ -25,4 +25,5 @@ Gem::Specification.new do |spec|
25
25
 
26
26
  spec.add_dependency "capistrano", "~> 3.1"
27
27
  spec.add_dependency "capistrano-composer", "~> 0.0.6"
28
+ spec.add_dependency "capistrano-cachetool", "~> 1.0.0"
28
29
  end
@@ -1,4 +1,5 @@
1
1
  require "capistrano/composer"
2
+ require "capistrano/cachetool"
2
3
 
3
4
  namespace :load do
4
5
  task :defaults do
@@ -8,15 +8,20 @@ set :linked_dirs, -> { ["app/logs", "app/sessions", "src/Frontend/Files"] }
8
8
  # Run required tasks after the stage
9
9
  Capistrano::DSL.stages.each do |stage|
10
10
  after stage, "forkcms:configure:composer"
11
+ after stage, "forkcms:configure:cachetool"
11
12
  end
12
13
 
13
14
 
14
15
  # Make sure the composer executable is installed
15
16
  namespace :deploy do
16
17
  after :starting, "composer:install_executable"
18
+ after :starting, "cachetool:install_executable"
17
19
  after :publishing, "forkcms:symlink:document_root"
20
+ after :publishing, "forkcms:opcache:reset"
18
21
  end
19
22
 
20
23
 
21
24
  # Load the tasks
22
- load File.expand_path("../../tasks/forkcms.rake", __FILE__)
25
+ load File.expand_path("../../tasks/configure.rake", __FILE__)
26
+ load File.expand_path("../../tasks/opcache.rake", __FILE__)
27
+ load File.expand_path("../../tasks/symlink.rake", __FILE__)
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module Forkcms
3
- VERSION = "1.0.2"
3
+ VERSION = "2.0.0"
4
4
  end
5
5
  end
@@ -11,6 +11,15 @@ namespace :forkcms do
11
11
  # Set the correct bin
12
12
  SSHKit.config.command_map[:composer] = "#{fetch :php_bin_path} #{fetch :deploy_to}/shared/composer.phar"
13
13
  end
14
+
15
+ desc <<-DESC
16
+ Configures cachetool
17
+ It make sure the command is mapped correctly and the correct flags are used.
18
+ DESC
19
+ task :cachetool do
20
+ # Set the correct bin
21
+ SSHKit.config.command_map[:cachetool] = "#{fetch :php_bin_path} #{fetch :deploy_to}/shared/cachetool.phar"
22
+ end
14
23
  end
15
24
 
16
25
  namespace :symlink do
@@ -0,0 +1,40 @@
1
+ namespace :forkcms do
2
+ namespace :opcache do
3
+ desc <<-DESC
4
+ Reset the opcache
5
+ DESC
6
+ task :reset do
7
+ if fetch(:opcache_reset_strategy) === "file"
8
+ invoke "forkcms:opcache:reset_with_file"
9
+ elsif fetch(:opcache_reset_strategy) === "fcgi"
10
+ invoke "forkcms:opcache:reset_with_fcgi"
11
+ else
12
+ raise "Invalid value for :opcache_reset_strategy, possible values are: file, fcgi."
13
+ end
14
+ end
15
+
16
+ task :reset_with_file do
17
+ # make sure that we have all needed variables
18
+ raise "opcache_reset_base_url not set" unless fetch(:opcache_reset_base_url)
19
+
20
+ on roles(:web) do
21
+ stream = StringIO.new("<?php clearstatcache(true); if (function_exists('opcache_reset')) { opcache_reset(); }")
22
+ upload! stream, "#{current_path}/php-opcache-reset.php"
23
+ execute :curl, "-L --fail --silent --show-error", "#{fetch :opcache_reset_base_url}/php-opcache-reset.php"
24
+ execute :rm, "#{current_path}/php-opcache-reset.php"
25
+ end
26
+ end
27
+
28
+ task :reset_with_fcgi do
29
+ # make sure that we have all needed variables
30
+ raise "opcache_reset_fcgi_connection_string not set" unless fetch(:opcache_reset_fcgi_connection_string)
31
+
32
+ invoke "cachetool:run", "opcache:reset", "--fcgi=#{fetch :opcache_reset_fcgi_connection_string}"
33
+
34
+ # reenable our command, see https://github.com/capistrano/capistrano/issues/1686 for more information
35
+ Rake::Task["cachetool:run"].reenable
36
+
37
+ invoke "cachetool:run", "stat:clear", "--fcgi=#{fetch :opcache_reset_fcgi_connection_string}"
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,22 @@
1
+ namespace :forkcms do
2
+ namespace :symlink do
3
+ desc <<-DESC
4
+ Links the document root to the current folder
5
+ The document root is the folder that the webserver will serve, it should link to the current path.
6
+ DESC
7
+ task :document_root do
8
+ on roles(:web) do
9
+ if test("[ -L #{fetch :document_root} ]") && capture("readlink -- #{fetch :document_root}") == "#{current_path}/"
10
+ # all is well, the symlink is correct
11
+ elsif test("[ -d #{fetch :document_root} ]") || test("[ -f #{fetch :document_root} ]")
12
+ error "Document root #{fetch :document_root} already exists."
13
+ error "To link it, issue the following command:"
14
+ error "ln -sf #{current_path}/ #{fetch :document_root}"
15
+ else
16
+ execute :mkdir, "-p", File.dirname(fetch(:document_root))
17
+ execute :ln, "-sf", "#{current_path}/", fetch(:document_root)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-forkcms
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tijs Verkoyen
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.0.6
83
+ - !ruby/object:Gem::Dependency
84
+ name: capistrano-cachetool
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 1.0.0
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 1.0.0
83
97
  description: Capistrano ForkCMS - Easy deployment of ForkCMS 5+ apps with Ruby over
84
98
  SSH
85
99
  email:
@@ -100,7 +114,9 @@ files:
100
114
  - lib/capistrano/forkcms.rb
101
115
  - lib/capistrano/forkcms/defaults.rb
102
116
  - lib/capistrano/forkcms/version.rb
103
- - lib/capistrano/tasks/forkcms.rake
117
+ - lib/capistrano/tasks/configure.rake
118
+ - lib/capistrano/tasks/opcache.rake
119
+ - lib/capistrano/tasks/symlink.rake
104
120
  homepage: https://github.com/tijsverkoyen/capistrano-forkcms
105
121
  licenses:
106
122
  - MIT