webflow_cap 0.0.4 → 0.0.6
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.
- checksums.yaml +4 -4
- data/lib/capistrano/tasks/base.rake +2 -110
- data/lib/capistrano/tasks/htaccess.rake +32 -0
- data/lib/capistrano/tasks/mysql.rake +2 -0
- data/lib/capistrano/tasks/rails.rake +73 -0
- data/lib/capistrano/tasks/webflow.rake +60 -0
- data/lib/capistrano/templates/Capfile +14 -0
- data/lib/capistrano/templates/deploy.rb.erb +11 -0
- data/lib/capistrano/templates/stage.rb.erb +11 -0
- data/lib/capistrano/webflow/base.rb +2 -0
- data/lib/capistrano/webflow/htaccess.rb +1 -0
- data/lib/capistrano/webflow/mysql.rb +1 -0
- data/lib/capistrano/webflow/rails.rb +1 -0
- data/lib/webflow_cap.rb +0 -0
- data/webflow_cap.gemspec +1 -1
- metadata +13 -3
- data/lib/capistrano/webflow.rb +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 16b1cbbc91b99f3c04536390582e3a5397d8d338
|
4
|
+
data.tar.gz: 5f6b95473b4a8f121cc2dd96cc8aaed416b7963c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 65dfcbd41dd73f94bf3ec4bda1be7daecfeb0a3857a5a1e1f70c226ed8accbc3a0f6b686553d6f9cf49bb91463fb3d95a9c96044bb3e226f690ee78eb97abccb
|
7
|
+
data.tar.gz: 8986def589f5e7e95f7a004bf51a2ceaa70182a5f9eb3e858527f4fad3e3df1ac73cdcc98de5f928aa625af368d414d798477cfb191bcdcb22c8b4c3a71986e0
|
@@ -15,108 +15,12 @@ namespace :load do
|
|
15
15
|
set :deploy_to, -> { "/docs/#{fetch :user}/#{fetch :domain}/#{fetch :application}" }
|
16
16
|
set :server_port, -> { 10000 + ((fetch :user)[3..6] + "0").to_i }
|
17
17
|
|
18
|
+
set :linked_files, %w{}
|
19
|
+
|
18
20
|
set :default_env, -> {
|
19
21
|
{'PATH' => "/docs/#{fetch :user}/.gem/ruby/#{fetch :ruby_version}/bin:/opt/ruby/#{fetch :ruby_version}/bin:$PATH"}
|
20
22
|
}
|
21
|
-
|
22
|
-
set :runit_service_dir, -> {"#{fetch :home}/etc/service/rails-#{fetch :server_port}-#{fetch :domain}-#{fetch :application}"}
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
namespace :runit do
|
27
|
-
task :setup_application_server do
|
28
|
-
on roles :all do
|
29
|
-
daemon_name = "rails-#{fetch :server_port}-#{fetch :domain}-#{fetch :application}"
|
30
|
-
runit_dir = "#{fetch :home}/etc/sv/#{daemon_name}"
|
31
|
-
|
32
|
-
if test("[ -e #{runit_dir} ]")
|
33
|
-
info("runit ready @ #{runit_dir}")
|
34
|
-
next
|
35
|
-
end
|
36
|
-
|
37
|
-
daemon_script = <<-EOF
|
38
|
-
#!/bin/bash -e
|
39
|
-
exec 2>&1
|
40
|
-
export HOME=#{fetch :home}
|
41
|
-
export PATH=#{fetch(:default_env)['PATH']}
|
42
|
-
source $HOME/.bashrc
|
43
|
-
cd #{fetch :deploy_to}/current
|
44
|
-
exec bundle exec #{fetch :application_server} -p #{fetch :server_port} -e production 2>&1
|
45
|
-
EOF
|
46
|
-
|
47
|
-
log_script = <<-EOF
|
48
|
-
#!/bin/bash -e
|
49
|
-
exec svlogd -tt ./main
|
50
|
-
EOF
|
51
|
-
|
52
|
-
execute "mkdir -p #{runit_dir}"
|
53
|
-
execute "mkdir -p #{runit_dir}/log/main"
|
54
|
-
upload! StringIO.new(daemon_script), "#{runit_dir}/run"
|
55
|
-
upload! StringIO.new(log_script), "#{runit_dir}/log/run"
|
56
|
-
execute "chmod +x #{runit_dir}/run"
|
57
|
-
execute "chmod +x #{runit_dir}/log/run"
|
58
|
-
execute "ln -nfs #{runit_dir} #{fetch :runit_service_dir}"
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
after 'deploy:started', 'runit:setup_application_server'
|
63
|
-
end
|
64
|
-
|
65
|
-
namespace :htaccess do
|
66
|
-
task :create do
|
67
|
-
on roles :all do
|
68
|
-
if test("[ -e #{shared_path}/.htaccess ]")
|
69
|
-
info "[skip] .htaccess already exists"
|
70
|
-
elsif fetch(:password_protected)
|
71
|
-
ask(:htaccess_user, fetch(:user))
|
72
|
-
ask(:htaccess_pass, nil)
|
73
|
-
|
74
|
-
htaccess_content = <<-EOF
|
75
|
-
AuthName "#{fetch :application}"
|
76
|
-
AuthType Basic
|
77
|
-
AuthUserFile #{shared_path}/.htpasswd
|
78
|
-
Require valid-user
|
79
|
-
EOF
|
80
|
-
upload! StringIO.new(htaccess_content), "#{shared_path}/.htaccess"
|
81
|
-
execute "htpasswd -dbc #{shared_path}/.htpasswd #{fetch :htaccess_user} #{fetch :htaccess_pass}"
|
82
|
-
end
|
83
|
-
end
|
84
23
|
end
|
85
|
-
|
86
|
-
task :remove do
|
87
|
-
on roles :all do
|
88
|
-
if test("[ -e #{shared_path}/.htaccess ]")
|
89
|
-
execute "rm -f #{shared_path}/.htaccess"
|
90
|
-
execute "rm -f #{shared_path}/.htpasswd"
|
91
|
-
execute "rm -f #{current_path}/.htaccess"
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
after 'deploy:updated', 'htaccess:create'
|
97
|
-
end
|
98
|
-
|
99
|
-
namespace :apache do
|
100
|
-
task :setup_reverse_proxy do
|
101
|
-
on roles :all do
|
102
|
-
path = "#{fetch :home}/#{fetch :domain}/htdocs"
|
103
|
-
|
104
|
-
if test("[ -e #{path} ]")
|
105
|
-
info "reverse proxy configured @ #{path}/.htaccess"
|
106
|
-
next
|
107
|
-
end
|
108
|
-
|
109
|
-
htaccess = <<-EOF
|
110
|
-
RewriteEngine On
|
111
|
-
RewriteRule ^(.*)$ http://localhost:#{fetch :server_port}/$1 [P]
|
112
|
-
EOF
|
113
|
-
execute "mkdir -p #{path}"
|
114
|
-
upload! StringIO.new(htaccess), "#{path}/.htaccess"
|
115
|
-
execute "chmod +r #{path}/.htaccess"
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
after 'deploy:started', 'apache:setup_reverse_proxy'
|
120
24
|
end
|
121
25
|
|
122
26
|
namespace :deploy do
|
@@ -141,16 +45,4 @@ namespace :deploy do
|
|
141
45
|
execute "sv status #{fetch :runit_service_dir}"
|
142
46
|
end
|
143
47
|
end
|
144
|
-
|
145
|
-
task :symlink_shared do
|
146
|
-
on roles :all do
|
147
|
-
execute "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml"
|
148
|
-
|
149
|
-
if fetch(:password_protected)
|
150
|
-
execute "ln -nfs #{shared_path}/.htaccess #{release_path}/.htaccess"
|
151
|
-
end
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
before :updated, :symlink_shared
|
156
48
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
namespace :htaccess do
|
2
|
+
task :password_protection do
|
3
|
+
on roles :all do
|
4
|
+
path = "#{fetch :home}/#{fetch :domain}/htdocs"
|
5
|
+
|
6
|
+
if test("[ -e #{shared_path}/.htpasswd ]")
|
7
|
+
info "[skip] password protection is already active"
|
8
|
+
elsif fetch(:password_protected)
|
9
|
+
ask(:htaccess_user, fetch(:user))
|
10
|
+
ask(:htaccess_pass, nil)
|
11
|
+
|
12
|
+
execute "echo 'AuthName #{fetch :application}' >> #{path}/.htaccess"
|
13
|
+
execute "echo 'AuthType Basic' >> #{path}/.htaccess"
|
14
|
+
execute "echo 'AuthUserFile #{shared_path}/.htpasswd' >> #{path}/.htaccess"
|
15
|
+
execute "echo 'Require valid-user' >> #{path}/.htaccess"
|
16
|
+
|
17
|
+
execute "htpasswd -dbc #{shared_path}/.htpasswd #{fetch :htaccess_user} #{fetch :htaccess_pass}"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
task :change_credentials do
|
23
|
+
on roles :all do
|
24
|
+
ask(:htaccess_user, fetch(:user))
|
25
|
+
ask(:htaccess_pass, nil)
|
26
|
+
|
27
|
+
execute "htpasswd -dbc #{shared_path}/.htpasswd #{fetch :htaccess_user} #{fetch :htaccess_pass}"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
after 'deploy:finished', :password_protection
|
32
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
namespace :load do
|
2
|
+
task :defaults do
|
3
|
+
set :runit_service_dir, -> {"#{fetch :home}/etc/service/rails-#{fetch :server_port}-#{fetch :domain}-#{fetch :application}"}
|
4
|
+
end
|
5
|
+
end
|
6
|
+
|
7
|
+
namespace :rails do
|
8
|
+
task :versions do
|
9
|
+
on roles :all do
|
10
|
+
within '/opt/ruby' do
|
11
|
+
execute(:ls)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
task :setup_reverse_proxy do
|
17
|
+
on roles :all do
|
18
|
+
path = "#{fetch :home}/#{fetch :domain}/htdocs"
|
19
|
+
|
20
|
+
if test("[ -e #{path}/.htaccess ]")
|
21
|
+
info "reverse proxy configured @ #{path}/.htaccess"
|
22
|
+
next
|
23
|
+
end
|
24
|
+
|
25
|
+
htaccess = <<-EOF
|
26
|
+
RewriteEngine On
|
27
|
+
RewriteRule ^(.*)$ http://localhost:#{fetch :server_port}/$1 [P]
|
28
|
+
|
29
|
+
EOF
|
30
|
+
execute "mkdir -p #{path}"
|
31
|
+
upload! StringIO.new(htaccess), "#{path}/.htaccess"
|
32
|
+
execute "chmod +r #{path}/.htaccess"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
task :setup_application_server do
|
37
|
+
on roles :all do
|
38
|
+
daemon_name = "rails-#{fetch :server_port}-#{fetch :domain}-#{fetch :application}"
|
39
|
+
runit_dir = "#{fetch :home}/etc/sv/#{daemon_name}"
|
40
|
+
|
41
|
+
if test("[ -e #{runit_dir} ]")
|
42
|
+
info("runit ready @ #{runit_dir}")
|
43
|
+
next
|
44
|
+
end
|
45
|
+
|
46
|
+
daemon_script = <<-EOF
|
47
|
+
#!/bin/bash -e
|
48
|
+
exec 2>&1
|
49
|
+
export HOME=#{fetch :home}
|
50
|
+
export PATH=#{fetch(:default_env)['PATH']}
|
51
|
+
source $HOME/.bashrc
|
52
|
+
cd #{fetch :deploy_to}/current
|
53
|
+
exec bundle exec #{fetch :application_server} -p #{fetch :server_port} -e production 2>&1
|
54
|
+
EOF
|
55
|
+
|
56
|
+
log_script = <<-EOF
|
57
|
+
#!/bin/bash -e
|
58
|
+
exec svlogd -tt ./main
|
59
|
+
EOF
|
60
|
+
|
61
|
+
execute "mkdir -p #{runit_dir}"
|
62
|
+
execute "mkdir -p #{runit_dir}/log/main"
|
63
|
+
upload! StringIO.new(daemon_script), "#{runit_dir}/run"
|
64
|
+
upload! StringIO.new(log_script), "#{runit_dir}/log/run"
|
65
|
+
execute "chmod +x #{runit_dir}/run"
|
66
|
+
execute "chmod +x #{runit_dir}/log/run"
|
67
|
+
execute "ln -nfs #{runit_dir} #{fetch :runit_service_dir}"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
after 'deploy:published', :setup_application_server
|
72
|
+
after :setup_application_server, :setup_reverse_proxy
|
73
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'erb'
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
namespace :webflow do
|
5
|
+
desc "Install webflow flavoured capistrano files"
|
6
|
+
task :install do
|
7
|
+
on roles :all do
|
8
|
+
set :application, ask("Application name", "APP")
|
9
|
+
set :ruby_version, ask("Ruby version", "2.1.5")
|
10
|
+
set :repo_url, ask("Repository URL", nil)
|
11
|
+
set :user, ask("Username", "f999999")
|
12
|
+
set :domain, ask("Domain", "example.com")
|
13
|
+
set :server, ask("Server", "server.example.com")
|
14
|
+
|
15
|
+
@application = fetch(:application)
|
16
|
+
@ruby_version = fetch(:ruby_version)
|
17
|
+
@repo_url = fetch(:repo_url)
|
18
|
+
@user = fetch(:user)
|
19
|
+
@domain = fetch(:domain)
|
20
|
+
@server = fetch(:server)
|
21
|
+
|
22
|
+
envs = ENV['STAGES'] || 'staging,production'
|
23
|
+
|
24
|
+
tasks_dir = Pathname.new('lib/capistrano/tasks')
|
25
|
+
config_dir = Pathname.new('config')
|
26
|
+
deploy_dir = config_dir.join('deploy')
|
27
|
+
|
28
|
+
deploy_rb = File.expand_path("../../templates/deploy.rb.erb", __FILE__)
|
29
|
+
stage_rb = File.expand_path("../../templates/stage.rb.erb", __FILE__)
|
30
|
+
capfile = File.expand_path("../../templates/Capfile", __FILE__)
|
31
|
+
|
32
|
+
execute "mkdir -p #{deploy_dir}"
|
33
|
+
|
34
|
+
entries = [{template: deploy_rb, file: config_dir.join('deploy.rb')}]
|
35
|
+
entries += envs.split(',').map { |stage| {template: stage_rb, file: deploy_dir.join("#{stage}.rb")} }
|
36
|
+
|
37
|
+
entries.each do |entry|
|
38
|
+
if File.exists?(entry[:file])
|
39
|
+
warn "[skip] #{entry[:file]} already exists"
|
40
|
+
else
|
41
|
+
File.open(entry[:file], 'w+') do |f|
|
42
|
+
f.write(ERB.new(File.read(entry[:template])).result(binding))
|
43
|
+
puts "create #{entry[:file]}"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
execute "mkdir -p #{tasks_dir}"
|
49
|
+
|
50
|
+
if File.exists?('Capfile')
|
51
|
+
warn "[skip] Capfile already exists"
|
52
|
+
else
|
53
|
+
FileUtils.cp(capfile, 'Capfile')
|
54
|
+
puts 'create Capfile'
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
puts 'Capified'
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'capistrano/setup'
|
2
|
+
require 'capistrano/deploy'
|
3
|
+
require 'capistrano/bundler'
|
4
|
+
require 'capistrano/rails/migrations'
|
5
|
+
require 'capistrano/rails/assets'
|
6
|
+
require 'capistrano/webflow/base'
|
7
|
+
require 'capistrano/webflow/rails'
|
8
|
+
# require the mysql library if you use mysql
|
9
|
+
require 'capistrano/webflow/mysql'
|
10
|
+
# require the htaccess library for use the htaccess password protection
|
11
|
+
require 'capistrano/webflow/htaccess'
|
12
|
+
|
13
|
+
# Loads custom tasks from `lib/capistrano/tasks' if you have any defined.
|
14
|
+
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# config valid only for current version of Capistrano
|
2
|
+
lock '<%= Capistrano::VERSION %>'
|
3
|
+
|
4
|
+
# set the application name to what ever you want. It is used for the folder name which contains the application
|
5
|
+
set :application, "<%= @application %>"
|
6
|
+
|
7
|
+
# set the repository url to repo_url
|
8
|
+
set :repo_url, "<%= @repo_url %>"
|
9
|
+
|
10
|
+
# use ruby_version to set a specific ruby version
|
11
|
+
# set :ruby_version, "<%= @ruby_version %>"
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# set user to the username from webflow e.g. f999999
|
2
|
+
set :user, "<%= @user %>"
|
3
|
+
|
4
|
+
# set domain to the domain which should be used e.g. example.com or dev.example.com
|
5
|
+
set :domain, "<%= @domain %>"
|
6
|
+
|
7
|
+
# set password_protected to true in production or staging to protect the page with htaccess
|
8
|
+
# set :password_protected, true
|
9
|
+
|
10
|
+
# set the servername to the servername or ipaddress from webflow e.g. server.example.com or 192.168.0.1
|
11
|
+
server "<%= @server %>", user: fetch(:user), roles: %w(:web :app :db), primary: true
|
@@ -0,0 +1 @@
|
|
1
|
+
load File.expand_path("../../tasks/htaccess.rake", __FILE__)
|
@@ -0,0 +1 @@
|
|
1
|
+
load File.expand_path("../../tasks/mysql.rake", __FILE__)
|
@@ -0,0 +1 @@
|
|
1
|
+
load File.expand_path("../../tasks/rails.rake", __FILE__)
|
data/lib/webflow_cap.rb
ADDED
File without changes
|
data/webflow_cap.gemspec
CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |gem|
|
|
13
13
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
14
14
|
gem.name = "webflow_cap"
|
15
15
|
gem.require_paths = ["lib"]
|
16
|
-
gem.version = "0.0.
|
16
|
+
gem.version = "0.0.6"
|
17
17
|
|
18
18
|
# dependencies
|
19
19
|
gem.add_dependency 'capistrano', '~>3.2'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webflow_cap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Aman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-11-
|
11
|
+
date: 2014-11-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capistrano
|
@@ -36,8 +36,18 @@ files:
|
|
36
36
|
- README.md
|
37
37
|
- Rakefile
|
38
38
|
- lib/capistrano/tasks/base.rake
|
39
|
+
- lib/capistrano/tasks/htaccess.rake
|
39
40
|
- lib/capistrano/tasks/mysql.rake
|
40
|
-
- lib/capistrano/
|
41
|
+
- lib/capistrano/tasks/rails.rake
|
42
|
+
- lib/capistrano/tasks/webflow.rake
|
43
|
+
- lib/capistrano/templates/Capfile
|
44
|
+
- lib/capistrano/templates/deploy.rb.erb
|
45
|
+
- lib/capistrano/templates/stage.rb.erb
|
46
|
+
- lib/capistrano/webflow/base.rb
|
47
|
+
- lib/capistrano/webflow/htaccess.rb
|
48
|
+
- lib/capistrano/webflow/mysql.rb
|
49
|
+
- lib/capistrano/webflow/rails.rb
|
50
|
+
- lib/webflow_cap.rb
|
41
51
|
- webflow_cap.gemspec
|
42
52
|
homepage: https://rubygems.org/gems/webflow_cap
|
43
53
|
licenses:
|
data/lib/capistrano/webflow.rb
DELETED