Sha256: 3e6849f09853467540cf86e2f1b3535010dd47aeec5d92ab4a4c12bb4dd55594

Contents?: true

Size: 1.86 KB

Versions: 2

Compression:

Stored size: 1.86 KB

Contents

set(:fqdn) { "#{application}-#{stage}.#{domain}" }
set(:rails_env) { stage.to_s }

# Server roles
# server fqdn, :app, :web, :cron, :worker
[:app, :web, :cron, :worker].each do |name|
  role(name) { fqdn }
end

# Run DB migrations from the :db role
role(:db, primary: true) { fqdn }

set :user, "deploy"
set :use_sudo, false
set(:deploy_to) { "/applications/#{application}/#{stage}" }

# SSH
set :default_run_options, { pty: true }
set :ssh_options, { forward_agent: true }

set :keep_releases, 5
after "deploy:restart", "deploy:cleanup"

set :shared_directories do
  %w[
    assets attachments backup cache certificates config log pids
    sockets system tmp
  ]
end

set :shared_resources do
  [
    { shared: "config/database.yml", release: "config/database.yml" },
    { shared: "sockets", release: "tmp/sockets" },
    { shared: "pids", release: "tmp/pids" }
  ]
end


# Deploy methods
namespace :deploy do
  desc "Setup our custom shared directories"
  task :setup_shared_directories, roles: :app do
    dirs = fetch(:shared_directories, []).map do |dir|
      "#{shared_path}/#{dir}"
    end.join(" ")

    run "mkdir -p -m 775 #{dirs}" unless dirs.empty?
  end

  desc "Tasks to execute after code update"
  task :link_to_shared, roles: :app do
    link_command = fetch(:shared_resources, []).map do |dirs|
      "rm -rf #{release_path}/#{dirs[:release]}; " <<
      "ln -fs #{shared_path}/#{dirs[:shared]} #{release_path}/#{dirs[:release]}"
    end.join(" && ")

    run link_command unless link_command.empty?
  end

  desc "Restart the application"
  task :restart, roles: :app do
    foreman.restart
  end

  desc "Start the application"
  task :start, roles: :app do
    foreman.start
  end

  desc "Stop the application"
  task :stop, roles: :app do
    foreman.stop
  end
end

after "deploy:setup", "deploy:setup_shared_directories"
after "deploy:finalize_update", "deploy:link_to_shared"

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
thincloud-deployment-1.0.1 lib/thincloud/recipes/deploy.rb
thincloud-deployment-1.0.0 lib/thincloud/recipes/deploy.rb