heroku_deploy 0.0.1 → 0.0.2

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.
data/.gitignore CHANGED
@@ -1 +1,2 @@
1
- .idea
1
+ .idea
2
+ .idea/*
@@ -0,0 +1,3 @@
1
+ <component name="ProjectDictionaryState">
2
+ <dictionary name="rosshale" />
3
+ </component>
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{heroku_deploy}
8
- s.version = "0.0.1"
8
+ s.version = "0.0.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ross Hale", "Chris Lemcke"]
@@ -17,17 +17,14 @@ Gem::Specification.new do |s|
17
17
  ]
18
18
  s.files = [
19
19
  ".gitignore",
20
- ".idea/encodings.xml",
21
- ".idea/heroku_deploy.iml",
22
- ".idea/misc.xml",
23
- ".idea/modules.xml",
24
- ".idea/vcs.xml",
20
+ ".idea/dictionaries/rosshale.xml",
25
21
  "README.markdown",
26
22
  "Rakefile",
27
23
  "VERSION",
28
24
  "config/heroku_deploy.yml",
29
25
  "heroku_deploy.gemspec",
30
26
  "lib/heroku_deploy.rb",
27
+ "lib/heroku_deploy/tasks.rb",
31
28
  "lib/tasks/heroku_deploy.rake"
32
29
  ]
33
30
  s.homepage = %q{http://github.com/lottay/heroku_deploy}
@@ -0,0 +1,136 @@
1
+ require 'rake'
2
+ require 'rake/tasklib'
3
+
4
+ class HerokuDeploy
5
+
6
+ class Tasks < ::Rake::TaskLib
7
+ attr_accessor :heroku_deploy
8
+
9
+ def initialize
10
+ yield self if block_given?
11
+
12
+ self.heroku_deploy = Rake.application.heroku_deploy
13
+
14
+ define
15
+ end
16
+
17
+ def define
18
+ namespace :heroku_deploy do
19
+ desc 'Setup branches and apps on heroku'
20
+ task :setup => :environment do
21
+ puts "I AM THE SETUP TASK!!"
22
+ end
23
+
24
+ desc 'Deploy changes to staging'
25
+ task :staging => :environment do
26
+
27
+ Rake::Task['deploy:backup:staging'].invoke
28
+
29
+ puts "Deploying to Staging"
30
+ puts "Merging staging with master"
31
+
32
+ `git checkout master`
33
+ `git pull origin master`
34
+ `git checkout staging`
35
+ `git pull origin staging`
36
+ `git merge master`
37
+ `git push origin staging`
38
+
39
+ heroku_deploy.push_to 'staging'
40
+ puts ""
41
+ puts "Staging Deployed!"
42
+ puts ""
43
+ end
44
+
45
+ desc 'Deploy changes to production'
46
+ task :production => :environment do
47
+
48
+ Rake::Task['deploy:backup:production'].invoke
49
+
50
+ puts "Deploying to Production"
51
+ puts "Merging production with staging"
52
+
53
+ `git checkout staging`
54
+ `git pull origin staging`
55
+ `git checkout production`
56
+ `git pull origin production`
57
+ `git merge staging`
58
+ `git push origin production`
59
+
60
+ heroku_deploy.push_to 'production'
61
+
62
+ puts ""
63
+ puts "Production Deployed!"
64
+ puts ""
65
+ end
66
+
67
+ desc 'Backup and download the code and database'
68
+ namespace :backup do
69
+ task :staging => :environment do
70
+ heroku_deploy.backup "grouppay-staging"
71
+ end
72
+
73
+ task :production => :environment do
74
+ heroku_deploy.backup "grouppay"
75
+ end
76
+ end
77
+
78
+ end
79
+ end
80
+ end
81
+
82
+ def push_to( branch )
83
+
84
+ app = "grouppay" if branch == "production"
85
+ app = "grouppay-staging" if branch == "staging"
86
+
87
+ puts "Going into maintenance mode"
88
+
89
+ `heroku maintenance:on --app #{app}`
90
+
91
+ puts "Pushing to #{app}"
92
+
93
+ `git push git@heroku.com:#{app}.git #{branch}:master`
94
+ `git checkout master`
95
+
96
+ puts "Migrating"
97
+
98
+ `heroku rake db:migrate --app #{app}`
99
+
100
+ puts "Restarting"
101
+
102
+ `heroku restart --app #{app}`
103
+
104
+ puts "Getting out of maintenance mode"
105
+
106
+ `heroku maintenance:off --app #{app}`
107
+
108
+ end
109
+
110
+ def backup( app )
111
+ puts ""
112
+ puts "Beginning Backup"
113
+ timestamp = Time.now.to_s(:number)
114
+ old_bundle = `heroku bundles --app #{app}`.split.first
115
+
116
+ `heroku bundles:destroy #{old_bundle} --app #{app}`
117
+ puts "Old Bundle Destroyed"
118
+ `heroku bundles:capture backup-#{timestamp} --app #{app}`
119
+ puts "New Bundle Captured on Heroku: backup-#{timestamp}"
120
+
121
+ while !`heroku bundles --app #{app}`.include?("complete") do
122
+ end
123
+
124
+ puts "New Bundle Ready For Download"
125
+
126
+ `heroku bundles:download backup-#{timestamp} --app #{app}`
127
+ `mv #{app}.tar.gz #{app}-#{timestamp}.tar.gz`
128
+
129
+ puts "New Bundle Downloaded: #{app}-#{timestamp}.tar.gz"
130
+
131
+ puts "Backup Complete!"
132
+ puts ""
133
+
134
+ end
135
+
136
+ end
data/lib/heroku_deploy.rb CHANGED
@@ -1 +1,5 @@
1
- Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].each { |ext| load ext }
1
+ class HerokuDeploy
2
+ autoload :Tasks, 'heroku_deploy/tasks'
3
+ end
4
+
5
+
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heroku_deploy
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ross Hale
@@ -43,17 +43,14 @@ extra_rdoc_files:
43
43
  - README.markdown
44
44
  files:
45
45
  - .gitignore
46
- - .idea/encodings.xml
47
- - .idea/heroku_deploy.iml
48
- - .idea/misc.xml
49
- - .idea/modules.xml
50
- - .idea/vcs.xml
46
+ - .idea/dictionaries/rosshale.xml
51
47
  - README.markdown
52
48
  - Rakefile
53
49
  - VERSION
54
50
  - config/heroku_deploy.yml
55
51
  - heroku_deploy.gemspec
56
52
  - lib/heroku_deploy.rb
53
+ - lib/heroku_deploy/tasks.rb
57
54
  - lib/tasks/heroku_deploy.rake
58
55
  has_rdoc: true
59
56
  homepage: http://github.com/lottay/heroku_deploy
data/.idea/encodings.xml DELETED
@@ -1,5 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
4
- </project>
5
-
@@ -1,9 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <module type="RUBY_MODULE" version="4">
3
- <component name="NewModuleRootManager">
4
- <content url="file://$MODULE_DIR$" />
5
- <orderEntry type="inheritedJdk" />
6
- <orderEntry type="sourceFolder" forTests="false" />
7
- </component>
8
- </module>
9
-
data/.idea/misc.xml DELETED
@@ -1,11 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="DependencyValidationManager">
4
- <option name="SKIP_IMPORT_STATEMENTS" value="false" />
5
- </component>
6
- <component name="ProjectDetails">
7
- <option name="projectName" value="heroku_deploy" />
8
- </component>
9
- <component name="ProjectRootManager" version="2" project-jdk-name="Ruby SDK 1.8.7 (/opt/local/bin/ruby)" project-jdk-type="RUBY_SDK" />
10
- </project>
11
-
data/.idea/modules.xml DELETED
@@ -1,9 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectModuleManager">
4
- <modules>
5
- <module fileurl="file://$PROJECT_DIR$/.idea/heroku_deploy.iml" filepath="$PROJECT_DIR$/.idea/heroku_deploy.iml" />
6
- </modules>
7
- </component>
8
- </project>
9
-
data/.idea/vcs.xml DELETED
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="VcsDirectoryMappings">
4
- <mapping directory="" vcs="" />
5
- <mapping directory="$PROJECT_DIR$" vcs="Git" />
6
- </component>
7
- </project>
8
-