jumpup-heroku 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +12 -0
- data/CONTRIBUTING.md +47 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +79 -0
- data/Rakefile +1 -0
- data/jumpup-heroku.gemspec +24 -0
- data/lib/jumpup/heroku/configuration.rb +40 -0
- data/lib/jumpup/heroku/env.rb +23 -0
- data/lib/jumpup/heroku/errors.rb +8 -0
- data/lib/jumpup/heroku/integrate.rb +189 -0
- data/lib/jumpup/heroku/version.rb +5 -0
- data/lib/jumpup/heroku.rb +17 -0
- data/lib/tasks/integrate.rake +38 -0
- data/spec/jumpup/heroku/configuration_spec.rb +214 -0
- data/spec/jumpup/heroku/env_spec.rb +70 -0
- data/spec/spec_helper.rb +11 -0
- metadata +109 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c31d2c9aa6f35da153e9f7a632c4a6a609c96acc
|
4
|
+
data.tar.gz: 947acb21f4f2d079f486005536d73230041c4072
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 372c4b33cd75739c43f2f74af77bfab74f36353f8c6a6452db317961d1e5dda01f372dd8cf7f188e6c37b19ed70fecc0069c465cad1a5bfa10612286baf8eafd
|
7
|
+
data.tar.gz: e1a0360be22f61d9897be8696d22e2cb6b6f5e8994847e1dcb15fcecc725efb0624f21915bb72d8d7070180bdd4cc5b4bc64a060a91069ca9ab93aef631f4f08
|
data/.gitignore
ADDED
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
jumpup-heroku
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-2.0.0
|
data/CHANGELOG.md
ADDED
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
# Contributing
|
2
|
+
|
3
|
+
We love pull requests. Here's a quick guide:
|
4
|
+
|
5
|
+
1. Fork the repo.
|
6
|
+
|
7
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
8
|
+
|
9
|
+
3. Run the tests. We only take pull requests with passing tests, and it's great
|
10
|
+
to know that you have a clean slate: `bundle && rake`
|
11
|
+
|
12
|
+
4. Add a test for your change. Only refactoring and documentation changes
|
13
|
+
require no new tests. If you are adding functionality or fixing a bug, we need
|
14
|
+
a test!
|
15
|
+
|
16
|
+
5. Make the test pass.
|
17
|
+
|
18
|
+
6. Update [CHANGELOG.md](https://github.com/Helabs/jumpup-heroku/blob/master/CHANGELOG.md) with a brief description of your changes under the `unreleased` heading.
|
19
|
+
|
20
|
+
7. Commit your changes (`git commit -am 'Added some feature'`)
|
21
|
+
|
22
|
+
8. Push to the branch (`git push origin my-new-feature`)
|
23
|
+
|
24
|
+
9. Create new Pull Request
|
25
|
+
|
26
|
+
At this point you're waiting on us. We like to at least comment on, if not
|
27
|
+
accept, pull requests within three business days (and, typically, one business
|
28
|
+
day). We may suggest some changes or improvements or alternatives.
|
29
|
+
|
30
|
+
Some things that will increase the chance that your pull request is accepted,
|
31
|
+
taken straight from the Ruby on Rails guide:
|
32
|
+
|
33
|
+
* Use Rails idioms and helpers
|
34
|
+
* Include tests that fail without your code, and pass with it
|
35
|
+
* Update the documentation, the surrounding one, examples elsewhere, guides,
|
36
|
+
whatever is affected by your contribution
|
37
|
+
|
38
|
+
Syntax:
|
39
|
+
|
40
|
+
* Two spaces, no tabs.
|
41
|
+
* No trailing whitespace. Blank lines should not have any space.
|
42
|
+
* Prefer &&/|| over and/or.
|
43
|
+
* my_method(my_arg) not my_method( my_arg ) or my_method my_arg.
|
44
|
+
* a = b and not a=b.
|
45
|
+
* Follow the conventions you see used in the source already.
|
46
|
+
|
47
|
+
And in case we didn't emphasize it enough: we love tests!
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Mauro George
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
# Jumpup-heroku
|
2
|
+
|
3
|
+
Rake tasks to deploy on heroku.
|
4
|
+
|
5
|
+
## Instalation
|
6
|
+
|
7
|
+
Add to your gem file.
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'jumpup-heroku', github: 'Helabs/jumpup-heroku'
|
11
|
+
```
|
12
|
+
|
13
|
+
Without groups on Gemfile, because of initializer.
|
14
|
+
|
15
|
+
## Usage
|
16
|
+
|
17
|
+
1. Create the initializer on `config/initializers/jumpup-heroku.rb`
|
18
|
+
|
19
|
+
```ruby
|
20
|
+
# config/initializers/jumpup-heroku.rb
|
21
|
+
Jumpup::Heroku.configure do |config|
|
22
|
+
config.app = 'myapp'
|
23
|
+
end
|
24
|
+
```
|
25
|
+
|
26
|
+
Have production and staging app? Do like this:
|
27
|
+
|
28
|
+
```ruby
|
29
|
+
Jumpup::Heroku.configure do |config|
|
30
|
+
config.staging_app = 'myapp-staging'
|
31
|
+
config.production_app = 'myapp'
|
32
|
+
end
|
33
|
+
```
|
34
|
+
|
35
|
+
If you need to disable remote database tasks (backup, migrate and seed):
|
36
|
+
|
37
|
+
```ruby
|
38
|
+
Jumpup::Heroku.configure do |config|
|
39
|
+
config.app = 'myapp'
|
40
|
+
config.run_database_tasks = false # Default: true
|
41
|
+
end
|
42
|
+
```
|
43
|
+
|
44
|
+
2. Add to the tasks on integration.rake the tasks to deploy on Heroku:
|
45
|
+
|
46
|
+
```ruby
|
47
|
+
# integration.rake
|
48
|
+
|
49
|
+
INTEGRATION_TASKS = %w(
|
50
|
+
jumpup:heroku:add_remote
|
51
|
+
jumpup:heroku:check
|
52
|
+
jumpup:heroku:lock
|
53
|
+
integration:start
|
54
|
+
integration:bundle_install
|
55
|
+
db:migrate
|
56
|
+
spec
|
57
|
+
integration:coverage_verify
|
58
|
+
integration:finish
|
59
|
+
jumpup:heroku:deploy
|
60
|
+
jumpup:heroku:unlock
|
61
|
+
)
|
62
|
+
```
|
63
|
+
|
64
|
+
## Versioning
|
65
|
+
|
66
|
+
Jumpup-heroku follow the [Semantic Versioning](http://semver.org/).
|
67
|
+
|
68
|
+
## Issues
|
69
|
+
|
70
|
+
If you have problems, please create a [Github Issue](https://github.com/Helabs/jumpup-heroku/issues).
|
71
|
+
|
72
|
+
## Contributing
|
73
|
+
|
74
|
+
Please see [CONTRIBUTING.md](https://github.com/Helabs/jumpup-heroku/blob/master/CONTRIBUTING.md) for details.
|
75
|
+
|
76
|
+
## Credits
|
77
|
+
|
78
|
+
Jumpup-heroku is maintained and funded by [HE:labs](http://helabs.com.br/opensource/).
|
79
|
+
Thank you to all the [contributors](https://github.com/Helabs/jumpup-heroku/graphs/contributors).
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'jumpup/heroku/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "jumpup-heroku"
|
8
|
+
spec.version = Jumpup::Heroku::VERSION
|
9
|
+
spec.authors = ["HE:labs"]
|
10
|
+
spec.email = ["contato@helabs.com.br"]
|
11
|
+
spec.description = %q{Rake tasks to deploy on heroku}
|
12
|
+
spec.summary = %q{Rake tasks to deploy on heroku}
|
13
|
+
spec.homepage = "https://github.com/Helabs/jumpup-heroku"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
spec.add_development_dependency "rspec"
|
24
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Jumpup
|
2
|
+
module Heroku
|
3
|
+
|
4
|
+
class << self
|
5
|
+
attr_accessor :configuration
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.configure
|
9
|
+
self.configuration ||= Configuration.new
|
10
|
+
yield(configuration)
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
class Configuration
|
15
|
+
attr_accessor :app, :staging_app, :production_app, :run_database_tasks
|
16
|
+
|
17
|
+
def initialize
|
18
|
+
@run_database_tasks ||= true
|
19
|
+
end
|
20
|
+
|
21
|
+
def valid?
|
22
|
+
boolean_run_database_tasks? && (only_app? || only_production_and_staging_apps?)
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def only_app?
|
28
|
+
app && staging_app.nil? && production_app.nil?
|
29
|
+
end
|
30
|
+
|
31
|
+
def only_production_and_staging_apps?
|
32
|
+
staging_app && production_app && app.nil?
|
33
|
+
end
|
34
|
+
|
35
|
+
def boolean_run_database_tasks?
|
36
|
+
run_database_tasks.is_a?(TrueClass) || run_database_tasks.is_a?(FalseClass)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Jumpup
|
2
|
+
module Heroku
|
3
|
+
|
4
|
+
class Env
|
5
|
+
|
6
|
+
def self.all
|
7
|
+
if Jumpup::Heroku.configuration.valid?
|
8
|
+
{
|
9
|
+
app: Jumpup::Heroku.configuration.app,
|
10
|
+
staging_app: Jumpup::Heroku.configuration.staging_app,
|
11
|
+
production_app: Jumpup::Heroku.configuration.production_app,
|
12
|
+
run_database_tasks: Jumpup::Heroku.configuration.run_database_tasks
|
13
|
+
}.delete_if { |k, v| v.nil? }
|
14
|
+
else
|
15
|
+
error_message = 'Check your `/config/initializers/jumpup-heroku.rb` and ' \
|
16
|
+
'confirm you have defined only `app` or `staging_app` and `production_app` together ' \
|
17
|
+
'more info here https://github.com/Helabs/jumpup-heroku'
|
18
|
+
raise ConfigurationError, error_message
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,189 @@
|
|
1
|
+
module Jumpup
|
2
|
+
module Heroku
|
3
|
+
|
4
|
+
class Integrate
|
5
|
+
|
6
|
+
def self.deploy
|
7
|
+
integrate.deploy
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.deploy_to_production
|
11
|
+
app = Env.all[:production_app]
|
12
|
+
new(app).deploy_to_production
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.add_remote
|
16
|
+
integrate.add_remote
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.check
|
20
|
+
integrate.check
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.lock
|
24
|
+
integrate.lock
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.unlock
|
28
|
+
integrate.unlock
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.integrate
|
32
|
+
envs = Env.all
|
33
|
+
app = envs[:app] || envs[:staging_app]
|
34
|
+
new(app)
|
35
|
+
end
|
36
|
+
|
37
|
+
def initialize(app)
|
38
|
+
@app = app
|
39
|
+
@envs = Env.all
|
40
|
+
end
|
41
|
+
|
42
|
+
def deploy
|
43
|
+
backup
|
44
|
+
push
|
45
|
+
migrate
|
46
|
+
seed
|
47
|
+
restart
|
48
|
+
end
|
49
|
+
|
50
|
+
def deploy_to_production
|
51
|
+
confirm_deploy
|
52
|
+
spec
|
53
|
+
confirm_maintenance
|
54
|
+
maintenance
|
55
|
+
backup
|
56
|
+
tag
|
57
|
+
push
|
58
|
+
migrate
|
59
|
+
seed
|
60
|
+
close_maintenance
|
61
|
+
restart
|
62
|
+
end
|
63
|
+
|
64
|
+
def add_remote
|
65
|
+
puts "--> Adding Heroku git remotes for app #{app}"
|
66
|
+
remote = run_with_clean_env("git remote | grep heroku", true).strip
|
67
|
+
run_with_clean_env("git remote add heroku git@heroku.com:#{app}.git") if remote.blank?
|
68
|
+
end
|
69
|
+
|
70
|
+
def check
|
71
|
+
puts "--> Checking if there's already someone integrating to #{app}"
|
72
|
+
|
73
|
+
var = run_with_clean_env("heroku config -s --app #{app} | grep INTEGRATING_BY", true).strip
|
74
|
+
integrating_by = var.split('=')[1]
|
75
|
+
|
76
|
+
integrating_by.strip! unless integrating_by.blank?
|
77
|
+
|
78
|
+
if integrating_by != user and not integrating_by.blank?
|
79
|
+
puts "--> Project is already being integrated by '#{integrating_by}', halting"
|
80
|
+
exit
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def lock
|
85
|
+
puts "--> Locking Heroku integration for you (#{user})"
|
86
|
+
run_with_clean_env("heroku config:set INTEGRATING_BY='#{user}' --app #{app}")
|
87
|
+
end
|
88
|
+
|
89
|
+
def unlock
|
90
|
+
puts "--> Unlocking Heroku integration"
|
91
|
+
run_with_clean_env("heroku config:unset INTEGRATING_BY --app #{app}")
|
92
|
+
end
|
93
|
+
|
94
|
+
private
|
95
|
+
attr_reader :app, :envs, :maintenance_mode
|
96
|
+
|
97
|
+
def user
|
98
|
+
@user ||= run_with_clean_env("git config --get user.name", true).strip
|
99
|
+
end
|
100
|
+
|
101
|
+
def run_with_clean_env(command, capture_output = false)
|
102
|
+
Bundler.with_clean_env { capture_output ? `#{command}` : system(command) }
|
103
|
+
end
|
104
|
+
|
105
|
+
def confirm(message)
|
106
|
+
print "\n#{message}\nAre you sure? [yN] "
|
107
|
+
raise 'Ok. Bye...' unless STDIN.gets.chomp.downcase == 'y'
|
108
|
+
end
|
109
|
+
|
110
|
+
def run_database_tasks?
|
111
|
+
@envs[:run_database_tasks]
|
112
|
+
end
|
113
|
+
|
114
|
+
def backup
|
115
|
+
return unless run_database_tasks?
|
116
|
+
puts "--> Backing up database via Heroku"
|
117
|
+
run_with_clean_env("heroku pgbackups:capture --expire --app #{app}")
|
118
|
+
end
|
119
|
+
|
120
|
+
def migrate
|
121
|
+
return unless run_database_tasks?
|
122
|
+
puts "--> Migrating"
|
123
|
+
run_with_clean_env("heroku run rake db:migrate --app #{app}")
|
124
|
+
end
|
125
|
+
|
126
|
+
def seed
|
127
|
+
return unless run_database_tasks?
|
128
|
+
puts "--> Seeding"
|
129
|
+
run_with_clean_env("heroku run rake db:seed --app #{app}")
|
130
|
+
end
|
131
|
+
|
132
|
+
def restart
|
133
|
+
puts "--> Restarting"
|
134
|
+
run_with_clean_env("heroku restart --app #{app}")
|
135
|
+
end
|
136
|
+
|
137
|
+
def push
|
138
|
+
puts "--> Pushing"
|
139
|
+
run_with_clean_env("git push git@heroku.com:#{app}.git HEAD:master")
|
140
|
+
end
|
141
|
+
|
142
|
+
def confirm_deploy
|
143
|
+
confirm("Going deploy to production [#{app}]...")
|
144
|
+
end
|
145
|
+
|
146
|
+
def spec
|
147
|
+
puts "--> Running all specs"
|
148
|
+
Rake::Task['spec'].invoke
|
149
|
+
end
|
150
|
+
|
151
|
+
def confirm_maintenance
|
152
|
+
print "\nPut #{app} in maintenance mode? [Yn] "
|
153
|
+
@maintenance_mode = true if STDIN.gets.chomp.downcase == 'y'
|
154
|
+
end
|
155
|
+
|
156
|
+
def maintenance?
|
157
|
+
@maintenance_mode
|
158
|
+
end
|
159
|
+
|
160
|
+
def maintenance
|
161
|
+
if maintenance?
|
162
|
+
puts "--> Setting Maintenance on"
|
163
|
+
run_with_clean_env("heroku maintenance:on --app #{app}")
|
164
|
+
restart
|
165
|
+
puts "--> Waiting 20 seconds to app come back (in maintenance mode)"
|
166
|
+
sleep(20)
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
def tag
|
171
|
+
iso_date = Time.now.strftime('%Y-%m-%dT%H%M%S')
|
172
|
+
tag_name = "production-#{iso_date}"
|
173
|
+
|
174
|
+
puts "--> Tagging as #{tag_name}"
|
175
|
+
run_with_clean_env("git tag #{tag_name} master")
|
176
|
+
|
177
|
+
puts "--> Pushing to origin"
|
178
|
+
run_with_clean_env("git push origin #{tag_name}")
|
179
|
+
end
|
180
|
+
|
181
|
+
def close_maintenance
|
182
|
+
if maintenance?
|
183
|
+
puts "Setting Maintenance off"
|
184
|
+
run_with_clean_env("heroku maintenance:off --app #{app}")
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require "jumpup/heroku/version"
|
2
|
+
|
3
|
+
module Jumpup
|
4
|
+
module Heroku
|
5
|
+
require 'jumpup/heroku/errors'
|
6
|
+
require 'jumpup/heroku/configuration'
|
7
|
+
require 'jumpup/heroku/env'
|
8
|
+
require 'jumpup/heroku/integrate'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def gem_path
|
13
|
+
Gem::Specification.find_by_name('jumpup-heroku').full_gem_path
|
14
|
+
end
|
15
|
+
|
16
|
+
Dir["#{gem_path}/lib/tasks/*.rake"].each { |ext| load ext } if defined?(Rake)
|
17
|
+
|
@@ -0,0 +1,38 @@
|
|
1
|
+
namespace :jumpup do
|
2
|
+
namespace :heroku do
|
3
|
+
|
4
|
+
desc "Add Heroku git remotes"
|
5
|
+
task add_remote: :environment do
|
6
|
+
Jumpup::Heroku::Integrate.add_remote
|
7
|
+
end
|
8
|
+
|
9
|
+
desc "Check if there's someone else integrating the project"
|
10
|
+
task check: :environment do
|
11
|
+
Jumpup::Heroku::Integrate.check
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "Lock the Heroku integration"
|
15
|
+
task lock: :environment do
|
16
|
+
Jumpup::Heroku::Integrate.lock
|
17
|
+
end
|
18
|
+
|
19
|
+
desc "Unlock the Heroku integration"
|
20
|
+
task unlock: :environment do
|
21
|
+
Jumpup::Heroku::Integrate.unlock
|
22
|
+
end
|
23
|
+
|
24
|
+
desc "Deploy to heroku"
|
25
|
+
task deploy: :environment do
|
26
|
+
Jumpup::Heroku::Integrate.deploy
|
27
|
+
end
|
28
|
+
|
29
|
+
namespace :deploy do
|
30
|
+
|
31
|
+
desc "Deploy to production"
|
32
|
+
task production: :environment do
|
33
|
+
Jumpup::Heroku::Integrate.deploy_to_production
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
@@ -0,0 +1,214 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Jumpup::Heroku::Configuration do
|
4
|
+
|
5
|
+
before do
|
6
|
+
Jumpup::Heroku.configuration = nil
|
7
|
+
end
|
8
|
+
|
9
|
+
describe ".configure" do
|
10
|
+
|
11
|
+
describe "without configuration" do
|
12
|
+
before do
|
13
|
+
Jumpup::Heroku.configure do |config|
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
subject do
|
18
|
+
Jumpup::Heroku.configuration
|
19
|
+
end
|
20
|
+
|
21
|
+
its(:app) { should be_nil }
|
22
|
+
its(:staging_app) { should be_nil }
|
23
|
+
its(:production_app) { should be_nil }
|
24
|
+
its(:run_database_tasks) { should be_true }
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "with configurations" do
|
28
|
+
|
29
|
+
before do
|
30
|
+
Jumpup::Heroku.configure do |config|
|
31
|
+
config.app = 'myapp'
|
32
|
+
config.production_app = 'myapp-production'
|
33
|
+
config.staging_app = 'myapp-staging'
|
34
|
+
config.run_database_tasks = false
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
subject do
|
39
|
+
Jumpup::Heroku.configuration
|
40
|
+
end
|
41
|
+
|
42
|
+
its(:app) { should eq('myapp') }
|
43
|
+
its(:staging_app) { should eq('myapp-staging')}
|
44
|
+
its(:production_app) { should eq('myapp-production') }
|
45
|
+
its(:run_database_tasks) { should be_false }
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "#valid?" do
|
50
|
+
|
51
|
+
describe "with app" do
|
52
|
+
|
53
|
+
before do
|
54
|
+
Jumpup::Heroku.configure do |config|
|
55
|
+
config.app = 'myapp'
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'be valid' do
|
60
|
+
expect(Jumpup::Heroku.configuration).to be_valid
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe "with staging_app and production_app" do
|
65
|
+
|
66
|
+
before do
|
67
|
+
Jumpup::Heroku.configure do |config|
|
68
|
+
config.production_app = 'myapp-production'
|
69
|
+
config.staging_app = 'myapp-staging'
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'be valid' do
|
74
|
+
expect(Jumpup::Heroku.configuration).to be_valid
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
describe "with app, staging_app and production_app" do
|
79
|
+
|
80
|
+
before do
|
81
|
+
Jumpup::Heroku.configure do |config|
|
82
|
+
config.app = 'myapp'
|
83
|
+
config.production_app = 'myapp-production'
|
84
|
+
config.staging_app = 'myapp-staging'
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'not be valid' do
|
89
|
+
expect(Jumpup::Heroku.configuration).to_not be_valid
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe "with staging_app" do
|
94
|
+
|
95
|
+
before do
|
96
|
+
Jumpup::Heroku.configure do |config|
|
97
|
+
config.staging_app = 'myapp-staging'
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
it 'not be valid' do
|
102
|
+
expect(Jumpup::Heroku.configuration).to_not be_valid
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
describe "with production_app" do
|
107
|
+
|
108
|
+
before do
|
109
|
+
Jumpup::Heroku.configure do |config|
|
110
|
+
config.production_app = 'myapp-production'
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
it 'not be valid' do
|
115
|
+
expect(Jumpup::Heroku.configuration).to_not be_valid
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
describe "with app and production_app" do
|
120
|
+
|
121
|
+
before do
|
122
|
+
Jumpup::Heroku.configure do |config|
|
123
|
+
config.app = 'myapp'
|
124
|
+
config.production_app = 'myapp-production'
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
it 'not be valid' do
|
129
|
+
expect(Jumpup::Heroku.configuration).to_not be_valid
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
describe "with app and staging_app" do
|
134
|
+
|
135
|
+
before do
|
136
|
+
Jumpup::Heroku.configure do |config|
|
137
|
+
config.app = 'myapp'
|
138
|
+
config.staging_app = 'myapp-staging'
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
it 'not be valid' do
|
143
|
+
expect(Jumpup::Heroku.configuration).to_not be_valid
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
describe "with true run_database_tasks" do
|
148
|
+
|
149
|
+
before do
|
150
|
+
Jumpup::Heroku.configure do |config|
|
151
|
+
config.app = 'myapp'
|
152
|
+
config.run_database_tasks = true
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
it 'be valid' do
|
157
|
+
expect(Jumpup::Heroku.configuration).to be_valid
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
describe "with false run_database_tasks" do
|
162
|
+
|
163
|
+
before do
|
164
|
+
Jumpup::Heroku.configure do |config|
|
165
|
+
config.app = 'myapp'
|
166
|
+
config.run_database_tasks = false
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
it 'be valid' do
|
171
|
+
expect(Jumpup::Heroku.configuration).to be_valid
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
describe "with invalid run_database_tasks" do
|
176
|
+
|
177
|
+
before do
|
178
|
+
Jumpup::Heroku.configure do |config|
|
179
|
+
config.app = 'myapp'
|
180
|
+
config.run_database_tasks = 'a'
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
it 'be valid' do
|
185
|
+
expect(Jumpup::Heroku.configuration).to_not be_valid
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
describe "without configuration" do
|
190
|
+
|
191
|
+
before do
|
192
|
+
Jumpup::Heroku.configure do |config|
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
it 'not be valid' do
|
197
|
+
expect(Jumpup::Heroku.configuration).to_not be_valid
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
describe "with configuration nil" do
|
202
|
+
|
203
|
+
before do
|
204
|
+
Jumpup::Heroku.configuration = nil
|
205
|
+
end
|
206
|
+
|
207
|
+
it 'not be valid' do
|
208
|
+
pending "The bug is raised when have no config/initialier/heroku-deploy.rb file"
|
209
|
+
expect(Jumpup::Heroku.configuration).to_not be_valid
|
210
|
+
end
|
211
|
+
end
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Jumpup::Heroku::Env do
|
4
|
+
|
5
|
+
before do
|
6
|
+
Jumpup::Heroku.configuration = nil
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "with app" do
|
10
|
+
|
11
|
+
before do
|
12
|
+
Jumpup::Heroku.configure do |config|
|
13
|
+
config.app = 'myapp'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
it "have correct env info" do
|
18
|
+
expect(Jumpup::Heroku::Env.all).to eq({ app: 'myapp', run_database_tasks: true })
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "with staging_app and production_app" do
|
23
|
+
|
24
|
+
before do
|
25
|
+
Jumpup::Heroku.configure do |config|
|
26
|
+
config.production_app = 'myapp-production'
|
27
|
+
config.staging_app = 'myapp-staging'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
it "have correct env info" do
|
32
|
+
result = { production_app: 'myapp-production', staging_app: 'myapp-staging', run_database_tasks: true }
|
33
|
+
expect(Jumpup::Heroku::Env.all).to eq(result)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "with run_database_tasks" do
|
38
|
+
|
39
|
+
before do
|
40
|
+
Jumpup::Heroku.configure do |config|
|
41
|
+
config.app = 'myapp'
|
42
|
+
config.run_database_tasks = false
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
it "have correct env info" do
|
47
|
+
result = { app: 'myapp', run_database_tasks: false }
|
48
|
+
expect(Jumpup::Heroku::Env.all).to eq(result)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "with a invalid config env" do
|
53
|
+
|
54
|
+
before do
|
55
|
+
Jumpup::Heroku.configure do |config|
|
56
|
+
config.app = 'myapp'
|
57
|
+
config.production_app = 'myapp-production'
|
58
|
+
config.staging_app = 'myapp-staging'
|
59
|
+
config.run_database_tasks = 'a'
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'raise error' do
|
64
|
+
expect do
|
65
|
+
Jumpup::Heroku::Env.all
|
66
|
+
end.to raise_error(Jumpup::Heroku::ConfigurationError, %r{/config/initializers/jumpup-heroku.rb})
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jumpup-heroku
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- HE:labs
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-01-08 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: '1.3'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
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: Rake tasks to deploy on heroku
|
56
|
+
email:
|
57
|
+
- contato@helabs.com.br
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- .gitignore
|
63
|
+
- .ruby-gemset
|
64
|
+
- .ruby-version
|
65
|
+
- CHANGELOG.md
|
66
|
+
- CONTRIBUTING.md
|
67
|
+
- Gemfile
|
68
|
+
- LICENSE.txt
|
69
|
+
- README.md
|
70
|
+
- Rakefile
|
71
|
+
- jumpup-heroku.gemspec
|
72
|
+
- lib/jumpup/heroku.rb
|
73
|
+
- lib/jumpup/heroku/configuration.rb
|
74
|
+
- lib/jumpup/heroku/env.rb
|
75
|
+
- lib/jumpup/heroku/errors.rb
|
76
|
+
- lib/jumpup/heroku/integrate.rb
|
77
|
+
- lib/jumpup/heroku/version.rb
|
78
|
+
- lib/tasks/integrate.rake
|
79
|
+
- spec/jumpup/heroku/configuration_spec.rb
|
80
|
+
- spec/jumpup/heroku/env_spec.rb
|
81
|
+
- spec/spec_helper.rb
|
82
|
+
homepage: https://github.com/Helabs/jumpup-heroku
|
83
|
+
licenses:
|
84
|
+
- MIT
|
85
|
+
metadata: {}
|
86
|
+
post_install_message:
|
87
|
+
rdoc_options: []
|
88
|
+
require_paths:
|
89
|
+
- lib
|
90
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - '>='
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0'
|
100
|
+
requirements: []
|
101
|
+
rubyforge_project:
|
102
|
+
rubygems_version: 2.0.6
|
103
|
+
signing_key:
|
104
|
+
specification_version: 4
|
105
|
+
summary: Rake tasks to deploy on heroku
|
106
|
+
test_files:
|
107
|
+
- spec/jumpup/heroku/configuration_spec.rb
|
108
|
+
- spec/jumpup/heroku/env_spec.rb
|
109
|
+
- spec/spec_helper.rb
|