push2heroku 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -57,18 +57,6 @@ However if I delete `staging` key from `push2heroku.yml` then `staging`
57
57
  is no longer a special branch and the heroku url would be
58
58
  `http://nimbleshop-staging-neeraj.herokuapp.com` .
59
59
 
60
- ## Resetting the database
61
-
62
- When the application is deployed for the very first time then you want
63
- the database to reset and some sort of setup to be run. However on
64
- subsequest deployment you do not need to run those setup tasks.
65
-
66
- To incorporate that on first deployment `push2heroku` will execute
67
- commands mentioned under key `hard`. Here `hard` stands for hard push.
68
- Subsequent pushes will be `soft` push.
69
-
70
- If you want to force `hard` push anytime then execute `rake push2heroku
71
- HARD=true`.
72
60
 
73
61
  ## License
74
62
 
@@ -2,11 +2,11 @@ module Push2heroku
2
2
  class Base
3
3
 
4
4
  attr_accessor :branch_name, :commands, :current_user, :heroku_app_name, :settings, :named_branches
5
- attr_reader :hard, :project_name
5
+ attr_reader :callbacks, :project_name
6
6
 
7
- def initialize(hard)
7
+ def initialize(callbacks)
8
8
  @project_name = File.basename(Dir.getwd)
9
- @hard = hard.blank? ? false : true
9
+ @callbacks = callbacks
10
10
 
11
11
  git = Git.new
12
12
  @branch_name = git.current_branch
@@ -28,8 +28,10 @@ module Push2heroku
28
28
  feedback_to_user
29
29
  commands.each do |cmd|
30
30
  begin
31
+ puts "Going to execute: #{cmd}"
31
32
  sh cmd
32
33
  rescue Exception => e
34
+ puts "command that failed was: #{cmd}"
33
35
  puts e
34
36
  end
35
37
  end
@@ -50,9 +52,35 @@ module Push2heroku
50
52
  def build_commands
51
53
  commands << settings.pre_config_commands
52
54
  build_config_commands
53
- commands << ( Util.hard_push?(self) ? settings.post_config_commands.hard : settings.post_config_commands.soft )
54
- commands << "bundle exec heroku open --app #{heroku_app_name}"
55
- commands.flatten!
55
+ add_before_every_install
56
+ add_callback_commands
57
+ add_after_every_install
58
+
59
+ if public_url = settings.public_url
60
+ commands << "open http://#{public_url}"
61
+ else
62
+ commands << "bundle exec heroku open --app #{heroku_app_name}"
63
+ end
64
+
65
+ commands.flatten!.compact!
66
+ end
67
+
68
+ def add_before_every_install
69
+ if cmd = settings.post_config_commands.before_every_install
70
+ commands << cmd
71
+ end
72
+ end
73
+
74
+ def add_after_every_install
75
+ if cmd = settings.post_config_commands.after_every_install
76
+ commands << cmd
77
+ end
78
+ end
79
+
80
+ def add_callback_commands
81
+ callbacks.each do |callback|
82
+ commands << settings.post_config_commands[callback]
83
+ end
56
84
  end
57
85
 
58
86
  def build_config_commands
@@ -73,7 +101,6 @@ module Push2heroku
73
101
  puts '='*50
74
102
  puts 'Following commands will be executed:'
75
103
  commands.each do |cmd|
76
- puts ''
77
104
  puts cmd
78
105
  end
79
106
  puts '='*50
@@ -4,8 +4,8 @@ module Push2heroku
4
4
  rake_tasks do
5
5
  desc "pushes to heroku"
6
6
  task :push2heroku => :environment do
7
- hard = ENV['HARD']
8
- Base.new(hard).push
7
+ callbacks = (ENV['CALLBACKS'] || '').split(',')
8
+ Base.new(callbacks).push
9
9
  end
10
10
  end
11
11
 
@@ -2,7 +2,15 @@ class Util
2
2
 
3
3
  def self.hard_push?(base)
4
4
  remote_branch_name = "h#{base.branch_name}"
5
- base.hard || !remote_branch_exists?(remote_branch_name)
5
+
6
+ # do hard push only when expicitly asked
7
+ # base.hard || !remote_branch_exists?(remote_branch_name)
8
+ base.hard
9
+ end
10
+
11
+ def self.new_install?(base)
12
+ remote_branch_name = "h#{base.branch_name}"
13
+ !remote_branch_exists?(remote_branch_name)
6
14
  end
7
15
 
8
16
  def self.remote_branch_exists?(remote_branch_name)
@@ -1,3 +1,3 @@
1
1
  module Push2heroku
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/push2heroku.gemspec CHANGED
@@ -4,9 +4,9 @@ require File.expand_path('../lib/push2heroku/version', __FILE__)
4
4
  Gem::Specification.new do |gem|
5
5
  gem.authors = ["Neeraj Singh"]
6
6
  gem.email = ["neerajdotname@gmail.com"]
7
- gem.description = %q{push2heroku}
8
- gem.summary = %q{push2heroku}
9
- gem.homepage = ""
7
+ gem.description = %q{push2heroku makes it easy to push code to heroku}
8
+ gem.summary = %q{push2heroku gem makes it easy to push code to heroku}
9
+ gem.homepage = "http://bigbinary.com"
10
10
 
11
11
  gem.files = `git ls-files`.split($\)
12
12
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: push2heroku
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-12 00:00:00.000000000 Z
12
+ date: 2012-08-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: hashr
@@ -43,7 +43,7 @@ dependencies:
43
43
  - - '='
44
44
  - !ruby/object:Gem::Version
45
45
  version: 2.25.0
46
- description: push2heroku
46
+ description: push2heroku makes it easy to push code to heroku
47
47
  email:
48
48
  - neerajdotname@gmail.com
49
49
  executables: []
@@ -63,7 +63,7 @@ files:
63
63
  - lib/push2heroku/util.rb
64
64
  - lib/push2heroku/version.rb
65
65
  - push2heroku.gemspec
66
- homepage: ''
66
+ homepage: http://bigbinary.com
67
67
  licenses: []
68
68
  post_install_message:
69
69
  rdoc_options: []
@@ -77,7 +77,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
77
77
  version: '0'
78
78
  segments:
79
79
  - 0
80
- hash: 2308710282152006324
80
+ hash: 2282767973940770
81
81
  required_rubygems_version: !ruby/object:Gem::Requirement
82
82
  none: false
83
83
  requirements:
@@ -86,11 +86,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
86
86
  version: '0'
87
87
  segments:
88
88
  - 0
89
- hash: 2308710282152006324
89
+ hash: 2282767973940770
90
90
  requirements: []
91
91
  rubyforge_project:
92
92
  rubygems_version: 1.8.24
93
93
  signing_key:
94
94
  specification_version: 3
95
- summary: push2heroku
95
+ summary: push2heroku gem makes it easy to push code to heroku
96
96
  test_files: []