inploy 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -5,7 +5,7 @@ require 'rake/gempackagetask'
5
5
  require 'spec/rake/spectask'
6
6
 
7
7
  GEM = "inploy"
8
- GEM_VERSION = "1.2.0"
8
+ GEM_VERSION = "1.3.0"
9
9
  SUMMARY = "Rails deployment made easy"
10
10
  AUTHOR = "Diego Carrion"
11
11
  EMAIL = "dc.rec1@gmail.com"
data/lib/inploy/deploy.rb CHANGED
@@ -2,19 +2,29 @@ module Inploy
2
2
  class Deploy
3
3
  include Helper
4
4
 
5
- attr_accessor :repository, :user, :application, :hosts, :path, :ssh_opts, :branch
5
+ attr_accessor :repository, :user, :application, :hosts, :path, :ssh_opts, :branch, :environment
6
6
 
7
7
  def initialize
8
+ self.server = :passenger
8
9
  @branch = 'master'
10
+ @environment = 'production'
9
11
  end
10
12
 
11
13
  def template=(template)
12
- require "inploy/#{template}"
13
- extend eval(camelize(template))
14
+ load_module("templates/#{template}")
15
+ end
16
+
17
+ def server=(server)
18
+ load_module("servers/#{server}")
14
19
  end
15
20
 
16
21
  def remote_setup
17
- remote_run "cd #{path} && git clone --depth 1 #{repository} #{application} && cd #{application} && git checkout -f -b #{branch} origin/#{branch} && rake inploy:local:setup"
22
+ if branch.eql? "master"
23
+ checkout = ""
24
+ else
25
+ checkout = "&& $($(git branch | grep -vq #{branch}) && git checkout -f -b #{branch} origin/#{branch})"
26
+ end
27
+ remote_run "cd #{path} && git clone --depth 1 #{repository} #{application} && cd #{application} #{checkout} && rake inploy:local:setup environment=#{environment}"
18
28
  end
19
29
 
20
30
  def local_setup
@@ -24,24 +34,26 @@ module Inploy
24
34
  end
25
35
 
26
36
  def remote_update
27
- remote_run "cd #{application_path} && rake inploy:local:update"
37
+ remote_run "cd #{application_path} && rake inploy:local:update environment=#{environment}"
28
38
  end
29
39
 
30
40
  def local_update
31
41
  run "git pull origin #{branch}"
32
42
  after_update_code
33
43
  end
34
-
44
+
35
45
  private
36
46
 
37
47
  def after_update_code
48
+ run "git submodule update --init"
38
49
  copy_sample_files
39
50
  install_gems
40
51
  migrate_database
41
52
  run "rm -R -f public/cache"
42
53
  rake_if_included "more:parse"
43
54
  rake_if_included "asset:packager:build_all"
44
- run "touch tmp/restart.txt"
45
- end
55
+ rake_if_included "hoptoad:deploy TO=#{environment} REPO=#{repository} REVISION=#{`git log | head -1 | cut -d ' ' -f 2`}"
56
+ restart_server
57
+ end
46
58
  end
47
59
  end
data/lib/inploy/helper.rb CHANGED
@@ -1,17 +1,22 @@
1
1
  module Inploy
2
2
  module Helper
3
+ def load_module(filename)
4
+ require "inploy/#{filename}"
5
+ extend eval(filename.split("/").map { |word| camelize(word) }.join("::"))
6
+ end
7
+
3
8
  def create_folders(*folders)
4
9
  folders.each { |folder| create_folder folder }
5
10
  end
6
-
11
+
7
12
  def create_folder(path)
8
13
  run "mkdir -p #{path}"
9
14
  end
10
-
15
+
11
16
  def host
12
17
  hosts.first
13
18
  end
14
-
19
+
15
20
  def camelize(string)
16
21
  string.to_s.gsub(/\/(.?)/) { "::" + $1.upcase }.gsub(/(^|_)(.)/) { $2.upcase }
17
22
  end
@@ -27,12 +32,14 @@ module Inploy
27
32
  end
28
33
 
29
34
  def secure_copy(src, dest)
30
- log "mv #{src} #{dest}"
31
- FileUtils.cp src, dest unless File.exists?(dest)
35
+ unless File.exists?(dest)
36
+ log "mv #{src} #{dest}"
37
+ FileUtils.cp src, dest
38
+ end
32
39
  end
33
40
 
34
41
  def migrate_database
35
- rake "db:migrate RAILS_ENV=production"
42
+ rake "db:migrate RAILS_ENV=#{environment}"
36
43
  end
37
44
 
38
45
  def tasks
@@ -40,7 +47,7 @@ module Inploy
40
47
  end
41
48
 
42
49
  def rake_if_included(command)
43
- rake command if tasks.include?("rake #{command}")
50
+ rake command if tasks.include?("rake #{command.split[0]}")
44
51
  end
45
52
 
46
53
  def rake(command)
@@ -63,7 +70,7 @@ module Inploy
63
70
  end
64
71
 
65
72
  def install_gems
66
- rake "gems:install"
73
+ rake "gems:install RAILS_ENV=#{environment}"
67
74
  end
68
75
  end
69
76
  end
@@ -0,0 +1,9 @@
1
+ module Inploy
2
+ module Servers
3
+ module Passenger
4
+ def restart_server
5
+ run "touch tmp/restart.txt"
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Inploy
2
+ module Servers
3
+ module Unicorn
4
+ def restart_server
5
+ run "kill -USR2 `cat tmp/pids/unicorn.pid`"
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,33 @@
1
+ module Inploy
2
+ module Templates
3
+ module Locaweb
4
+ def remote_setup
5
+ run "rm -Rf #{tmp_path} && git clone . #{tmp_path} && tar czf - #{tmp_path} | ssh #{user}@#{host} 'tar xzfv - -C ~/ && mv ~#{tmp_path} #{path}/ && cd #{application_path} && rake inploy:local:setup'"
6
+ end
7
+
8
+ def remote_update
9
+ run "git push ssh://[#{user}@#{host}]#{application_path} master"
10
+ super
11
+ end
12
+
13
+ def local_setup
14
+ super
15
+ run "ln -s #{application_path}/public /home/#{user}/public_html/#{application}"
16
+ end
17
+
18
+ def local_update
19
+ after_update_code
20
+ end
21
+
22
+ def path
23
+ @path ||= "/home/#{user}/rails_app"
24
+ end
25
+
26
+ private
27
+
28
+ def tmp_path
29
+ "/tmp/#{application}"
30
+ end
31
+ end
32
+ end
33
+ end
@@ -10,6 +10,9 @@ begin
10
10
  rescue Exception
11
11
  end
12
12
 
13
+
14
+ deploy.environment = ENV['environment'] || deploy.environment
15
+
13
16
  namespace :inploy do
14
17
  namespace :local do
15
18
  desc "Local Setup"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Diego Carrion
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-02 00:00:00 -02:00
12
+ date: 2009-11-23 00:00:00 -02:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -22,13 +22,15 @@ extensions: []
22
22
  extra_rdoc_files: []
23
23
 
24
24
  files:
25
+ - lib/tasks/inploy.rake
25
26
  - lib/inploy/deploy.rb
27
+ - lib/inploy/servers/unicorn.rb
28
+ - lib/inploy/servers/passenger.rb
29
+ - lib/inploy/templates/locaweb.rb
26
30
  - lib/inploy/helper.rb
27
- - lib/inploy/locaweb.rb
28
31
  - lib/inploy.rb
29
- - lib/tasks/inploy.rake
30
- - Rakefile
31
32
  - README.textile
33
+ - Rakefile
32
34
  has_rdoc: true
33
35
  homepage: http://www.diegocarrion.com
34
36
  licenses: []
@@ -1,31 +0,0 @@
1
- module Inploy
2
- module Locaweb
3
- def remote_setup
4
- run "rm -Rf #{tmp_path} && git clone . #{tmp_path} && tar czf - #{tmp_path} | ssh #{user}@#{host} 'tar xzfv - -C ~/ && mv ~#{tmp_path} #{path}/ && cd #{application_path} && rake inploy:local:setup'"
5
- end
6
-
7
- def remote_update
8
- run "git push ssh://[#{user}@#{host}]#{application_path} master"
9
- super
10
- end
11
-
12
- def local_setup
13
- super
14
- run "ln -s #{application_path}/public /home/#{user}/public_html/#{application}"
15
- end
16
-
17
- def local_update
18
- after_update_code
19
- end
20
-
21
- def path
22
- @path ||= "/home/#{user}/rails_app"
23
- end
24
-
25
- private
26
-
27
- def tmp_path
28
- "/tmp/#{application}"
29
- end
30
- end
31
- end