From 42e4eaa01504dadd3ff37fce49119ae3f156b23e Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Tue, 26 Dec 2017 19:45:43 +0100 Subject: Capistrano task for uploading puma config. --- lib/capistrano/tasks/configure_puma.rake | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 lib/capistrano/tasks/configure_puma.rake (limited to 'lib/capistrano') diff --git a/lib/capistrano/tasks/configure_puma.rake b/lib/capistrano/tasks/configure_puma.rake new file mode 100644 index 0000000..ccea36b --- /dev/null +++ b/lib/capistrano/tasks/configure_puma.rake @@ -0,0 +1,15 @@ +# :mode=ruby: +namespace :deploy do + desc 'Configure Puma' + task :configure_puma do + target_file = File.join(shared_path, 'config', 'puma.rb') + on roles(:app) do + unless test "[ -f #{target_file} ]" + template = ERB.new(IO.read(File.join(Dir.pwd, 'config', 'deploy', 'templates', 'puma.rb.erb'))) + upload!(StringIO.new(template.result(binding)), target_file) + end + end + end + + before 'deploy:finishing', 'deploy:generate_secret_token' +end -- cgit v1.2.3 From 2cb29eb625786458c89ab32829fbfb6215b6f89c Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Tue, 26 Dec 2017 19:46:56 +0100 Subject: Capistrano task for cold deploys. Run this for first time deploy (after setting up the database.) It loads the checked in schema instead of running through all the migrations to rebuild the database schema. The task will be skipped if the database schema already exists, and let the migrations run as normally. --- lib/capistrano/tasks/deploy_cold.rake | 42 +++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 lib/capistrano/tasks/deploy_cold.rake (limited to 'lib/capistrano') diff --git a/lib/capistrano/tasks/deploy_cold.rake b/lib/capistrano/tasks/deploy_cold.rake new file mode 100644 index 0000000..f91ede6 --- /dev/null +++ b/lib/capistrano/tasks/deploy_cold.rake @@ -0,0 +1,42 @@ +# Capistrano task for cold deploys +# +# Taken from: https://stackoverflow.com/a/28001351/270280 +# Licensed under cc by-sa 3.0 +# +# Generalized and fixed running with the correct environment +# by Harald Eilertsen +# +namespace :deploy do + + # + # Run this for first time deploy (after setting up the database.) It + # loads the checked in schema instead of running through all the + # migrations to rebuild the database schema. + # + # The task will be skipped if the database schema already exists, and + # let the migrations run as normally. + # + + desc "deploy app for the first time (expects pre-created but empty DB)" + task :cold do + before 'deploy:migrate', 'deploy:initdb' + invoke 'deploy' + end + + desc "initialize a brand-new database (db:schema:load, db:seed)" + task :initdb => [ :set_rails_env ] do + on primary :db do |host| + within release_path do + if test(:psql, %Q{#{fetch(:pg_database)} -U #{fetch(:pg_user)} -c "SELECT table_name FROM information_schema.tables WHERE table_schema='public' AND table_type='BASE TABLE';"|grep schema_migrations}) + puts '*** THE PRODUCTION DATABASE IS ALREADY INITIALIZED, YOU IDIOT! ***' + else + with rails_env: fetch(:rails_env) do + execute :rake, 'db:schema:load' + execute :rake, 'db:seed' + end + end + end + end + end + +end -- cgit v1.2.3 From 0ce1d3ed2b7e7a2c57e98177eb35525beed46981 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Sun, 31 Dec 2017 17:18:41 +0100 Subject: Use stage name to configure piwik. --- lib/capistrano/tasks/configure_piwik.rake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/capistrano') diff --git a/lib/capistrano/tasks/configure_piwik.rake b/lib/capistrano/tasks/configure_piwik.rake index 99c42bb..d503cb0 100644 --- a/lib/capistrano/tasks/configure_piwik.rake +++ b/lib/capistrano/tasks/configure_piwik.rake @@ -7,7 +7,7 @@ namespace :deploy do on roles(:app) do unless test "[ -f #{output_file} ]" conf = { - fetch(:rails_env) => { + fetch(:stage) => { 'piwik' => { 'id_site' => fetch(:piwik_site_id), 'url' => fetch(:piwik_url), -- cgit v1.2.3