capistrano-psw 1.0.0.pre

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b991623b4a7789e1034988c7d39b318267eff92b
4
+ data.tar.gz: dbc39ef418ae63156d3a7abcbf84078f43413e99
5
+ SHA512:
6
+ metadata.gz: e08e05a041c913af3817399f948478efc7e2ae6651f6263ff2d1c8f881f504fcc7e113c2ca842533f7a82fe3ba3c14238e9cccdf917cceb4c549bdfaa498bc21
7
+ data.tar.gz: 402deb45f5e1c85a43667331574f012f909fb54ff5ce1589338645ba9b31600b9ef511fc2a9037c5e6792c6a7bac6c3cd0168406057c8ba53a9972985c7f7098
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.0.0-p247
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in capistrano-psw.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,23 @@
1
+ Copyright (c) 2013 Lexmark International Technology S.A. All rights reserved.
2
+
3
+ Redistribution and use in source and binary forms, with or without
4
+ modification, are permitted provided that the following conditions are met:
5
+ * Redistributions of source code must retain the above copyright
6
+ notice, this list of conditions and the following disclaimer.
7
+ * Redistributions in binary form must reproduce the above copyright
8
+ notice, this list of conditions and the following disclaimer in the
9
+ documentation and/or other materials provided with the distribution.
10
+ * Neither the name of Lexmark International Technology S.A. nor the
11
+ names of its contributors may be used to endorse or promote products
12
+ derived from this software without specific prior written permission.
13
+
14
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
15
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17
+ DISCLAIMED. IN NO EVENT SHALL Lexmark International Technology S.A. BE LIABLE FOR ANY
18
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
23
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.md ADDED
@@ -0,0 +1,136 @@
1
+ # Capistrano::Psw
2
+
3
+ This capistrano-psw gem contains code deployment and system management tasks that can be utilized
4
+ with Capistrano v3.
5
+
6
+ Until Capistrano v3 becomes available on RubyGems, it's not possible to specify a gemspec dependency on
7
+ it; however the v3 branch is a requirement for using these tasks.
8
+
9
+ ## Installation
10
+
11
+ Add this line to your application's Gemfile:
12
+
13
+ gem 'capistrano-psw'
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install capistrano-psw
22
+
23
+ ## Usage
24
+
25
+ ``` shell
26
+ $ cap -vT
27
+
28
+ $ cap staging deploy
29
+ $ cap production deploy
30
+
31
+ $ cap production deploy --dry-run
32
+ $ cap production deploy --prereqs
33
+ $ cap production deploy --trace
34
+ ```
35
+
36
+ ``` ruby
37
+ # Capfile
38
+
39
+ # Capfile Prereqs:
40
+ require 'capistrano/setup'
41
+ require 'capistrano/deploy'
42
+
43
+ # Gem include(s):
44
+ require 'capistrano/psw'
45
+
46
+ # or require just what you need
47
+ require 'capistrano/psw/task_loader'
48
+ ```
49
+
50
+ ``` ruby
51
+ # config/deploy.rb
52
+
53
+ namespace :deploy do
54
+
55
+ desc 'Release restart...'
56
+ task :restart do
57
+ invoke :'deploy:internal_restart'
58
+ end
59
+
60
+ desc '[internal] Restart logic...'
61
+ task :internal_restart do
62
+ on roles(:all) do |host|
63
+
64
+ info "Stopping nginx on remote server #{host}..."
65
+ sudo :service, 'nginx', 'stop'
66
+
67
+ info "Restarting sidekiq on remote server #{host}..."
68
+ #force a re-execution (the stop was done as a pre-hook)
69
+ Rake::Task['psw_sidekiq:start'].reenable
70
+ invoke :'psw_sidekiq:start'
71
+
72
+ info "Starting nginx on remote server #{host}..."
73
+ sudo :service, 'nginx', 'start'
74
+ end
75
+ end
76
+
77
+ #Before we start deploying any code, we need to stop any existing sidekiq servers
78
+ before :starting, 'psw_sidekiq:stop'
79
+
80
+ #Before we start deploying any code, we need to upload the github code
81
+ before :starting, 'psw_repo:default'
82
+
83
+ end
84
+ ```
85
+
86
+ ## Github-related Tasks
87
+
88
+ ### psw_repo:local_clone_repo
89
+ In situations where the githb repo is behind a VPN or firewall, the code must
90
+ be downloaded behind the VPN firewall and copied to the remote server. This task
91
+ will manage the download.
92
+
93
+ ```ruby
94
+ #set psw_repo preferences
95
+ before :'psw_repo:local_clone_repo', :set_repo_options do
96
+ set :psw_repo_url, 'git@github.private.com:workspace/repo.git'
97
+ end
98
+ ```
99
+
100
+ ### psw_repo:upload_repo
101
+ In situations where the githb repo is behind a VPN or firewall, the code must
102
+ be downloaded behind the VPN firewall and copied to the remote server. This
103
+ task will manage the upload to the remote server.
104
+
105
+ ### psw_repo:default
106
+ Executes the following tasks: local_clone_repo, upload_repo
107
+
108
+ ## Sidekiq-related Tasks
109
+ The standard sidekiq/capistrano integration (https://github.com/mperham/sidekiq/wiki/Deployment)
110
+ doesn't work with Capistrano v3 (https://github.com/cramerdev/capistrano-chef/issues/22),
111
+ so this implmenetation bridges the gap.
112
+
113
+ These tasks require rbenv be installed and the capistrano-rbenv (https://github.com/yyuu/capistrano-rbenv)
114
+ gem be installed.
115
+
116
+ ### psw_sidekiq:start
117
+ Starts a specified number of sidekiq servers.
118
+
119
+ ```ruby
120
+ before :'psw_sidekiq:stop', :set_sidekiq_options do
121
+ set :psw_sidekiq_bundle_cmd, "#{fetch(:rbenv_bundle_cmd)}"
122
+ set :psw_sidekiq_instance_cnt, "2"
123
+ end
124
+ ```
125
+
126
+ ### psw_sidekiq:stop
127
+ Stops all known sidekiq servers (by reviewing the PID files in the 'current' deployment). It
128
+ should be noted that this task should run as a'before' hook, so that the 'current' directory
129
+ still points to the last run (otherwise the PID files won't exist)
130
+
131
+ ### psw_sidekiq:restart
132
+ Executes the following tasks: stop, start
133
+
134
+ ## License
135
+
136
+ 2013 Lexmark International Technology S.A. All rights reserved.
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'capistrano/psw/version'
5
+ require 'rake'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = "capistrano-psw"
9
+ spec.version = Capistrano::Psw::VERSION
10
+ spec.authors = ["Lexmark International Technology S.A"]
11
+ spec.email = ["matt.sawka@perceptivesoftware.com"]
12
+ spec.description = %q{This gem contains code deployment and system management tasks that can be utilized with Capistrano v3}
13
+ spec.summary = %q{Contains Capistrano v3 Deployment Tasks}
14
+ spec.homepage = "http://www.perceptivesoftware.com/"
15
+ spec.license = "3-Clause BSD"
16
+
17
+ spec.files = FileList['lib/capistrano/psw/psw.rb',
18
+ 'lib/capistrano/psw/*',
19
+ 'resources/lib/capistrano/tasks/*'].to_a
20
+
21
+ spec.files = `git ls-files`.split($/)
22
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
23
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
24
+ spec.require_paths = ["lib", "resources/lib/capistrano/tasks"]
25
+
26
+ spec.add_development_dependency "bundler"
27
+ spec.add_development_dependency "rake"
28
+ spec.add_development_dependency "rspec"
29
+ end
@@ -0,0 +1,28 @@
1
+ # == task_loader.rb
2
+ #
3
+ # This module provides a generic Capistrano task loader (*.cap files). Tasks that are
4
+ # found in a directory ending with 'resources/lib/capistrano/tasks' will be loaded and
5
+ # made available to Capistrano v3.
6
+ #
7
+ # == Contact
8
+ #
9
+ # Author:: Lexmark International Technology S.A.
10
+ # Copyright:: 2013 Lexmark International Technology S.A. All rights reserved.
11
+ # License:: 3-Clause BSD
12
+
13
+ module Capistrano
14
+ module Psw
15
+ puts "Loading Capistrano V3 tasks..."
16
+
17
+ $LOAD_PATH.each do |dir|
18
+ if (dir.end_with?("resources/lib/capistrano/tasks"))
19
+ Dir.foreach(dir) do |task|
20
+ if (task.end_with?(".cap"))
21
+ puts "Loading task #{task}..."
22
+ load task
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,15 @@
1
+ # == task_loader.rb
2
+ #
3
+ # This module represents the gem version
4
+ #
5
+ # == Contact
6
+ #
7
+ # Author:: Lexmark International Technology S.A.
8
+ # Copyright:: 2013 Lexmark International Technology S.A. All rights reserved.
9
+ # License:: 3-Clause BSD
10
+
11
+ module Capistrano
12
+ module Psw
13
+ VERSION = "1.0.0.pre"
14
+ end
15
+ end
@@ -0,0 +1,7 @@
1
+ require "capistrano/psw/version"
2
+ require "capistrano/psw/task_loader"
3
+
4
+ module Capistrano
5
+ module Psw
6
+ end
7
+ end
@@ -0,0 +1,90 @@
1
+ # == psw-repo.cap
2
+ #
3
+ # Contains the capistrano tasks needed to deploy a rails project from a github
4
+ # repository behind a VPN or firewall.
5
+ #
6
+ # == Configuration
7
+ # The following configuration options may be set (should be set before the
8
+ # 'local_clone_repo' task is executed):
9
+ #
10
+ # before :'psw_repo:local_clone_repo', :set_repo_options do
11
+ # set :psw_repo_url, 'git@github..com:myRepo.git'
12
+ # set :branch, 'build'
13
+ # end
14
+ #
15
+ # * psw_repo_url
16
+ # ** The github location
17
+ # * branch
18
+ # ** (Optional) The branch of the github location to use; default is master
19
+ # * psw_repo_debug
20
+ # ** (Optional) Boolean that will enable debug logging
21
+ #
22
+ # == Tasks
23
+ #
24
+ # === psw_repo:local_clone_repo
25
+ # In situations where the githb repo is behind a VPN or firewall, the code must
26
+ # be downloaded behind the VPN firewall and copied to the remote server.
27
+ # This task will manage the download.
28
+ #
29
+ # === psw_repo:upload_repo
30
+ # In situations where the githb repo is behind a VPN or firewall, the code must
31
+ # be downloaded behind the VPN firewall and copied to the remote server. This
32
+ # task will manage the upload to the remote server.
33
+ #
34
+ # === psw_repo:default
35
+ # Executes the following tasks: local_clone_repo, upload_repo
36
+ #
37
+ # == Contact
38
+ #
39
+ # Author:: Lexmark International Technology S.A.
40
+ # Copyright:: 2013 Lexmark International Technology S.A. All rights reserved.
41
+ # License:: 3-Clause BSD
42
+
43
+ require 'find'
44
+
45
+ namespace :psw_repo do
46
+
47
+ desc 'Download private repository locally (firewall issues)'
48
+ task :local_clone_repo do
49
+ set :local_repo_dir, "#{fetch(:tmp_dir)}/#{fetch(:application)}"
50
+
51
+ puts "Downloading private repository to #{fetch(:local_repo_dir)}"
52
+ %x[rm -rf #{fetch(:local_repo_dir)}]
53
+
54
+ git_cmd = "git clone --mirror #{fetch(:psw_repo_url)} #{fetch(:local_repo_dir)}"
55
+ puts "Executing download command: #{git_cmd}"
56
+ %x[#{git_cmd}]
57
+ end
58
+
59
+ desc 'Upload private repository to remote server (firewall issues)'
60
+ task :upload_repo do
61
+ on roles(:all) do |host|
62
+ set :repo_url, "file:///tmp/#{fetch(:application)}"
63
+ set :remote_repo_dir, "#{fetch(:repo_url).gsub('file://', '')}"
64
+ set :local_repo_dir, "#{fetch(:tmp_dir)}/#{fetch(:application)}"
65
+
66
+ info "Uploading #{fetch(:local_repo_dir)} (local) to #{fetch(:remote_repo_dir)} on remote server #{host}..."
67
+
68
+ execute :rm, '-rf', "#{fetch(:remote_repo_dir)}"
69
+ execute :mkdir, '-p', "#{fetch(:remote_repo_dir)}"
70
+ func_file_upload = lambda { |file|
71
+ rel_file = "#{file.gsub("#{fetch(:local_repo_dir)}", '')}"
72
+ rel_file = rel_file[1..-1] if rel_file[0] == '/'
73
+
74
+ if (fetch(:psw_repo_debug))
75
+ debug "Inspecting: #{rel_file}"
76
+ end
77
+ if File.directory?(file)
78
+ execute :mkdir, '-p', "#{fetch(:remote_repo_dir)}/#{rel_file}"
79
+ elsif rel_file.gsub(/\s+/, "") != "" and rel_file != '.' and rel_file != '..'
80
+ upload! "#{fetch(:local_repo_dir)}/#{rel_file}", "#{fetch(:remote_repo_dir)}/#{rel_file}"
81
+ end
82
+ }
83
+ Find.find("#{fetch(:local_repo_dir)}").each &func_file_upload
84
+ end
85
+ end
86
+
87
+ desc "Deploy private repository to remote server(s)"
88
+ task default: [:'local_clone_repo', :'upload_repo'] do
89
+ end
90
+ end
@@ -0,0 +1,158 @@
1
+ # == psw-sidekiq.cap
2
+ #
3
+ # The standard sidekiq/capistrano integration (https://github.com/mperham/sidekiq/wiki/Deployment)
4
+ # doesn't work with Capistrano v3 (https://github.com/cramerdev/capistrano-chef/issues/22),
5
+ # so this implmenetation bridges the gap.
6
+ #
7
+ # == Configuration
8
+ # The following configuration options may be set (should be set before the 'stop' task is executed):
9
+ #
10
+ # before :'psw_sidekiq:stop', :set_sidekiq_options do
11
+ # set :psw_sidekiq_bundle_cmd, "#{fetch(:rbenv_bundle_cmd)}"
12
+ # set :psw_sidekiq_instance_cnt, "2"
13
+ # end
14
+ #
15
+ # * psw_sidekiq_bundle_cmd
16
+ # ** Because the 'bundle' command may elsewhere (i.e. rbenv/...), provide the location of the
17
+ # executable to use
18
+ # * psw_sidekiq_instance_cnt
19
+ # ** The number of sidekiq servers to start
20
+ #
21
+ # == Tasks
22
+ #
23
+ # === psw_sidekiq:start
24
+ # Starts a specified number of sidekiq servers.
25
+ #
26
+ # === psw_sidekiq:stop
27
+ # Stops all known sidekiq servers (by reviewing the PID files in the 'current' deployment). It
28
+ # should be noted that this task should run as a'before' hook, so that the 'current' directory
29
+ # still points to the last run (otherwise the PID files won't exist)
30
+ #
31
+ # === psw_sidekiq:restart
32
+ # Executes the following tasks: stop, start
33
+ #
34
+ # == Contact
35
+ #
36
+ # Author:: Lexmark International Technology S.A.
37
+ # Copyright:: 2013 Lexmark International Technology S.A. All rights reserved.
38
+ # License:: 3-Clause BSD
39
+
40
+ require 'find'
41
+
42
+ namespace :psw_sidekiq do
43
+
44
+ def create_sidekiq_pid_filenames(instance_cnt)
45
+
46
+ base_pid_dir="#{fetch(:current_path)}/pids"
47
+ info "Verifying that directory #{base_pid_dir} exists..."
48
+ execute :mkdir, '-p', "#{base_pid_dir}"
49
+
50
+ info "Requesting #{instance_cnt} sidekiq servers..."
51
+ pid_file_names = Array.new
52
+ for idx in 0..(instance_cnt.to_i-1)
53
+ file_name = get_pid_filename_for_index(idx)
54
+ info "Adding PID filename: #{file_name}"
55
+ pid_file_names.push file_name
56
+ end
57
+
58
+ info "Created the following PID filenames: #{pid_file_names}"
59
+ pid_file_names
60
+ end
61
+
62
+ def get_pid_filename_for_index(idx)
63
+ base_pid_dir="#{fetch(:current_path)}/pids"
64
+ "#{base_pid_dir}/sidekiq-#{idx}.pid"
65
+ end
66
+
67
+ desc "Start sidekiq server(s)..."
68
+ task :start do
69
+ on roles(:all) do |host|
70
+ info "Preparing to start sidekiq server(s)..."
71
+
72
+ pid_file_names = create_sidekiq_pid_filenames("#{fetch(:psw_sidekiq_instance_cnt, 1)}")
73
+
74
+ sidekiq_config_dir="#{fetch(:current_path)}/config"
75
+ execute :mkdir, '-p', "#{sidekiq_config_dir}"
76
+ sidekiq_config_file="#{sidekiq_config_dir}/sidekiq.yml"
77
+ info "Creating configuration file (#{sidekiq_config_file})..."
78
+ execute :touch, "", "#{sidekiq_config_file}"
79
+
80
+ sidekiq_log_dir="#{fetch(:current_path)}/log"
81
+ execute :mkdir, '-p', "#{sidekiq_log_dir}"
82
+ sidekiq_log_file="#{sidekiq_log_dir}/sidekiq.log"
83
+ info "Creating log file (#{sidekiq_log_file})..."
84
+ execute :rm, '-rf', "#{sidekiq_log_file}"
85
+ execute :touch, "", "#{sidekiq_log_file}"
86
+
87
+ idx = 0
88
+ for pid_file in pid_file_names do
89
+ info "Starting sidekiq server (#{pid_file})..."
90
+ execute :touch, "", "#{pid_file}"
91
+
92
+ sidekiq_command="#{fetch(:psw_sidekiq_bundle_cmd)} exec sidekiq"
93
+ rails_env = fetch(:rails_env, "production")
94
+ start_command="cd #{current_path} && nohup #{sidekiq_command} -d -e #{rails_env} -i #{idx} -P #{pid_file} -L #{sidekiq_log_file} >> #{sidekiq_log_file} 2>&1"
95
+ info "Executing command: #{start_command}"
96
+
97
+ execute :cd, "#{current_path}", "&& sudo nohup #{sidekiq_command} -d -e #{rails_env} -i #{idx} -P #{pid_file} -L #{sidekiq_log_file} >> #{sidekiq_log_file} 2>&1"
98
+
99
+ idx = idx + 1
100
+ end
101
+
102
+ info "Finished starting all sidekiq server(s)"
103
+ end
104
+ end
105
+
106
+ desc "Stop sidekiq server(s)..."
107
+ task :stop do
108
+ on roles(:all) do |host|
109
+ info "Looking for any running sidekiq server(s)..."
110
+
111
+ #shouldn't possibly have more than 50 sidekiqs running...
112
+ continue_pid_search = true
113
+ idx = 0
114
+ while continue_pid_search
115
+ begin
116
+ pid_file = get_pid_filename_for_index(idx)
117
+ if test("[ -f #{pid_file} ]")
118
+ info "Stopping sidekiq server for PID file #{pid_file}..."
119
+ execute :cat, "", "#{pid_file}"
120
+
121
+ begin
122
+ sudo :kill, "-0", "$(cat #{pid_file})"
123
+ sidekiq_command="#{fetch(:psw_sidekiq_bundle_cmd)} exec sidekiqctl"
124
+ execute :cd, "#{current_path}", "&& sudo #{sidekiq_command} stop #{pid_file} 10"
125
+ rescue
126
+ info "An error occurred stopping #{pid_file}. Cleaning up remaining artifacts..."
127
+ end
128
+
129
+ execute :rm, "-rf", "#{pid_file}"
130
+ else
131
+ #if the next file in the PID sequence doesn't exist, we're done
132
+ continue_pid_search = false
133
+ end
134
+
135
+ #fail-safe
136
+ if idx >= 50
137
+ continue_pid_search = false
138
+ end
139
+ ensure
140
+ idx = idx + 1
141
+ end
142
+ end
143
+
144
+ info "Finished stopping all sidekiq server(s)"
145
+ end
146
+ end
147
+
148
+ desc "Restart any sidekiq server(s)..."
149
+ task :restart do
150
+ #force a re-execution
151
+ Rake::Task['psw_sidekiq:stop'].reenable
152
+ invoke :'psw_sidekiq:stop'
153
+
154
+ #force a re-execution
155
+ Rake::Task['psw_sidekiq:start'].reenable
156
+ invoke :'psw_sidekiq:start'
157
+ end
158
+ end
@@ -0,0 +1,55 @@
1
+ require "rake"
2
+ require File.expand_path('../spec_helper.rb', __FILE__)
3
+
4
+
5
+ describe "psw_repo:" do
6
+ describe "default" do
7
+ let(:rake) { Rake::Application.new }
8
+ subject { rake["psw_repo:default"] }
9
+
10
+ before do
11
+ Rake.application = rake
12
+ Rake.application.add_import("./resources/lib/capistrano/tasks/psw-repo.cap")
13
+ Rake.application.load_imports()
14
+ end
15
+
16
+ it "has 'local_clone_repo' as a prerequisite" do
17
+ subject.prerequisites.should include('local_clone_repo')
18
+ #subject.invoke
19
+ end
20
+
21
+ it "has 'upload_repo' as a prerequisite" do
22
+ subject.prerequisites.should include('upload_repo')
23
+ end
24
+ end
25
+
26
+ describe "local_clone_repo" do
27
+ let(:rake) { Rake::Application.new }
28
+ subject { rake["psw_repo:local_clone_repo"] }
29
+
30
+ before do
31
+ Rake.application = rake
32
+ Rake.application.add_import("./resources/lib/capistrano/tasks/psw-repo.cap")
33
+ Rake.application.load_imports()
34
+ end
35
+
36
+ it "has 'no prerequisites" do
37
+ subject.prerequisites.should be_empty
38
+ end
39
+ end
40
+
41
+ describe "upload_repo" do
42
+ let(:rake) { Rake::Application.new }
43
+ subject { rake["psw_repo:upload_repo"] }
44
+
45
+ before do
46
+ Rake.application = rake
47
+ Rake.application.add_import("./resources/lib/capistrano/tasks/psw-repo.cap")
48
+ Rake.application.load_imports()
49
+ end
50
+
51
+ it "has 'no prerequisites" do
52
+ subject.prerequisites.should be_empty
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,50 @@
1
+ require "rake"
2
+ require File.expand_path('../spec_helper.rb', __FILE__)
3
+
4
+
5
+ describe "psw_sidekiq:" do
6
+ describe "restart" do
7
+ let(:rake) { Rake::Application.new }
8
+ subject { rake["psw_sidekiq:restart"] }
9
+
10
+ before do
11
+ Rake.application = rake
12
+ Rake.application.add_import("./resources/lib/capistrano/tasks/psw-sidekiq.cap")
13
+ Rake.application.load_imports()
14
+ end
15
+
16
+ it "has 'no prerequisites" do
17
+ subject.prerequisites.should be_empty
18
+ end
19
+ end
20
+
21
+ describe "start" do
22
+ let(:rake) { Rake::Application.new }
23
+ subject { rake["psw_sidekiq:start"] }
24
+
25
+ before do
26
+ Rake.application = rake
27
+ Rake.application.add_import("./resources/lib/capistrano/tasks/psw-sidekiq.cap")
28
+ Rake.application.load_imports()
29
+ end
30
+
31
+ it "has 'no prerequisites" do
32
+ subject.prerequisites.should be_empty
33
+ end
34
+ end
35
+
36
+ describe "stop" do
37
+ let(:rake) { Rake::Application.new }
38
+ subject { rake["psw_sidekiq:stop"] }
39
+
40
+ before do
41
+ Rake.application = rake
42
+ Rake.application.add_import("./resources/lib/capistrano/tasks/psw-sidekiq.cap")
43
+ Rake.application.load_imports()
44
+ end
45
+
46
+ it "has 'no prerequisites" do
47
+ subject.prerequisites.should be_empty
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,20 @@
1
+ class Object
2
+ def fetch(key, default=nil)
3
+ @env_vars = Hash.new unless @env_vars != nil
4
+ @env_vars[key]
5
+ end
6
+
7
+ def set(key, value)
8
+ @env_vars = Hash.new unless @env_vars != nil
9
+ @env_vars[key] = value
10
+ end
11
+ end
12
+
13
+ #module SharedTestMethods
14
+ # def get_auth_header
15
+
16
+ # expiration = Time.now.to_i + 1000
17
+ # peppr_token = PepprAuthToken.build_token_from_oauth_provider("access_token=1/fFBGRNJru1FQd44AzqT3Zg&email=matt.sawka@perceptivesoftware.com&expiration=#{expiration}")
18
+ # "OAuth #{peppr_token.get_token_string}"
19
+ # end
20
+ #end
metadata ADDED
@@ -0,0 +1,106 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: capistrano-psw
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.pre
5
+ platform: ruby
6
+ authors:
7
+ - Lexmark International Technology S.A
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-10-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: This gem contains code deployment and system management tasks that can
56
+ be utilized with Capistrano v3
57
+ email:
58
+ - matt.sawka@perceptivesoftware.com
59
+ executables: []
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - .gitignore
64
+ - .ruby-version
65
+ - Gemfile
66
+ - LICENSE.txt
67
+ - README.md
68
+ - Rakefile
69
+ - capistrano-psw.gemspec
70
+ - lib/capistrano/psw.rb
71
+ - lib/capistrano/psw/task_loader.rb
72
+ - lib/capistrano/psw/version.rb
73
+ - resources/lib/capistrano/tasks/psw-repo.cap
74
+ - resources/lib/capistrano/tasks/psw-sidekiq.cap
75
+ - spec/psw-repo_spec.rb
76
+ - spec/psw-sidekiq_spec.rb
77
+ - spec/spec_helper.rb
78
+ homepage: http://www.perceptivesoftware.com/
79
+ licenses:
80
+ - 3-Clause BSD
81
+ metadata: {}
82
+ post_install_message:
83
+ rdoc_options: []
84
+ require_paths:
85
+ - lib
86
+ - resources/lib/capistrano/tasks
87
+ required_ruby_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>'
95
+ - !ruby/object:Gem::Version
96
+ version: 1.3.1
97
+ requirements: []
98
+ rubyforge_project:
99
+ rubygems_version: 2.0.3
100
+ signing_key:
101
+ specification_version: 4
102
+ summary: Contains Capistrano v3 Deployment Tasks
103
+ test_files:
104
+ - spec/psw-repo_spec.rb
105
+ - spec/psw-sidekiq_spec.rb
106
+ - spec/spec_helper.rb