inploy 1.9.5 → 1.9.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,7 +2,7 @@ h2. ABOUT:
2
2
 
3
3
  Inploy was born as an option to setup and deploy Rails applications in an easier and smarter way.
4
4
 
5
- It executes automatically common tasks like migrate the database, install gems, package the assets, clean the cache, notify Hoptoad, restart the server, etc. This means you will not have a big deploy script calld 'recipe' like with other tools, only a simple deploy script with a few lines.
5
+ It automatically executes common tasks like migrate the database, install gems, package the assets, clean the cache, notify Hoptoad, restart the server, etc. This means you will not have a big deploy script calld 'recipe' like with other tools, only a simple deploy script with a few lines.
6
6
 
7
7
  It uses Git to version the deploys and to pull or push only the modifications in each one. This means you will not have a lot of folders in the server (only one) with duplicated code and that ech deploy will be very fast.
8
8
 
@@ -61,7 +61,7 @@ When using Inploy with Rake, there are five tasks:
61
61
  * inploy:local:setup
62
62
 
63
63
  - creates directories db and tmp/pids
64
- - copies config/*.sample and config/*.example files to config/*
64
+ - copies config/*.[example|sample|template] files to config/*
65
65
  - creates the database
66
66
  - executes init.sh file case it exists
67
67
  - inits and updates the git submodules
@@ -83,7 +83,7 @@ When using Inploy with Rake, there are five tasks:
83
83
 
84
84
  - pulls the repository
85
85
  - inits and updates the git submodules
86
- - copies config/*.sample and config/*.example files to config/*
86
+ - copies config/*.[example|sample|template] files to config/*
87
87
  - installs gems
88
88
  - migrates the database
89
89
  - updates the crontab from Whenever if being used
@@ -131,15 +131,18 @@ cache_dirs = ['public/cache', 'tmp/cache'] # default ['public/cache']
131
131
  skip_steps = ['install_gems', 'clear_cache'] # default []
132
132
  app_folder = 'project_folder' # default empty
133
133
  login_shell = true # default false
134
- bundler_path = 'another_path' # default ~/.bundle
134
+ bundler_opts = '--binstubs' # default '--deployment --without development test cucumber'
135
135
  </code></pre>
136
136
 
137
+ The <code>bundler_path</code> option has been removed. To migrate your existing config/deploy.rb file simply replace <code>bundler_path = '/path/to/gems'</code> with <code>bundler_opts = '--path /path/to/gems'</code>
138
+
137
139
  h2. SKIP STEPS
138
140
 
139
141
  You can skip some steps when running a Rake task, just add "skip_steps" into your rake command line or add "skip_steps" to your deploy.rb to always skip those steps.
140
142
 
141
143
  Currently the steps available to skip are:
142
144
 
145
+ - copy_sample_files: skip copying config/*.[example|sample|template] files to config/*
143
146
  - install_gems: skip rake gems:install
144
147
  - migrate_database: skip rake db:migrate
145
148
  - clear_cache: skip removing cache directories
@@ -151,9 +154,32 @@ Currently the steps available to skip are:
151
154
 
152
155
  h2. HOOKS
153
156
 
154
- Currently the only hook is called before restarting the server. If you need another hook, please fork the project and implemented it or created an issue, it's very easy.
157
+ Currently, the following three hooks are available:
158
+
159
+ - before_git (not called before initial git clone)
160
+ - after_git
161
+ - after_setup
162
+ - before_restarting_server
163
+ - after_restarting_server
164
+
165
+ To show a "down for maintenance" page during the deployment, use the before_git and after_restarting_server hooks.
166
+
167
+ If you need another hook, please fork the project and implement it. Or submit an issue, it's very easy.
168
+
169
+ h3. say
155
170
 
156
- h2. CONTRIBUTORS:
171
+ Use the <code>say</code> method to show messages issued by your hooks.
172
+
173
+ <pre><code># Show a simple message
174
+ say 'restart custom daemons'
175
+
176
+ # Show a message (blank output lines are suppressed)
177
+ say 'revert local changes' do |output|
178
+ output << `git checkout . 2>&1`
179
+ end
180
+ </pre></code>
181
+
182
+ h2. CONTRIBUTORS
157
183
 
158
184
  Inploy is brought to you by:
159
185
 
@@ -171,7 +197,7 @@ Inploy is brought to you by:
171
197
  * Erik Dahlstrand
172
198
  * Carlos Brando
173
199
  * Thomas Ritz
174
-
200
+ * Sven Schwyn
175
201
 
176
202
  h2. LICENSE:
177
203
 
data/Rakefile CHANGED
@@ -5,7 +5,7 @@ require 'rubygems/package_task'
5
5
  require 'rspec/core/rake_task'
6
6
 
7
7
  GEM = "inploy"
8
- GEM_VERSION = "1.9.5"
8
+ GEM_VERSION = "1.9.6"
9
9
  SUMMARY = "Rails and Sinatra deployment made easy"
10
10
  AUTHOR = "Diego Carrion"
11
11
  EMAIL = "dc.rec1@gmail.com"
@@ -8,4 +8,4 @@ module Inploy
8
8
  load 'tasks/inploy.rake'
9
9
  end
10
10
  end
11
- end if defined?(Rails) and Rails::VERSION::MAJOR == 3
11
+ end if defined?(Rails) and Rails::VERSION::MAJOR == 3
@@ -3,9 +3,9 @@ module Inploy
3
3
  include Helper
4
4
  include DSL
5
5
 
6
- attr_accessor :repository, :user, :application, :hosts, :path, :app_folder, :ssh_opts, :branch, :environment, :port, :skip_steps, :cache_dirs, :sudo, :login_shell, :bundler_path
6
+ attr_accessor :repository, :user, :application, :hosts, :path, :app_folder, :ssh_opts, :branch, :environment, :port, :skip_steps, :cache_dirs, :sudo, :login_shell, :bundler_opts
7
7
 
8
- define_callbacks :after_setup, :before_restarting_server
8
+ define_callbacks :before_git, :after_git, :after_setup, :before_restarting_server, :after_restarting_server
9
9
 
10
10
  def initialize
11
11
  self.server = :passenger
@@ -45,6 +45,7 @@ module Inploy
45
45
 
46
46
  def local_setup
47
47
  create_folders 'public', 'tmp/pids', 'db'
48
+ callback :after_git
48
49
  copy_sample_files
49
50
  rake "db:create RAILS_ENV=#{environment}"
50
51
  run "./init.sh" if file_exists?("init.sh")
@@ -61,7 +62,9 @@ module Inploy
61
62
  end
62
63
 
63
64
  def remote_reset(params)
65
+ callback :before_git
64
66
  remote_run "cd #{application_path} && git reset --hard #{params[:to]}"
67
+ callback :after_git
65
68
  end
66
69
 
67
70
  def local_update
@@ -70,13 +73,15 @@ module Inploy
70
73
  end
71
74
 
72
75
  def update_code
73
- run "git pull origin #{branch}"
76
+ callback :before_git
77
+ raise "ERROR: git pull failed with error status = #{$?}" unless run "git pull origin #{branch}"
78
+ callback :after_git
74
79
  end
75
80
 
76
81
  private
77
82
 
78
83
  def checkout
79
- branch.eql?("master") ? "" : "&& $(git branch | grep -vq #{branch}) && git checkout -f -b #{branch} origin/#{branch}"
84
+ branch.eql?("master") ? "" : "&& git checkout -f -b #{branch} origin/#{branch}"
80
85
  end
81
86
 
82
87
  def bundle
@@ -90,16 +95,18 @@ module Inploy
90
95
  migrate_database
91
96
  update_crontab
92
97
  run "rm -R -f public/assets" if jammit_is_installed?
93
- run "RAILS_ENV=#{environment} script/delayed_job restart" if file_exists?("script/delayed_job")
98
+ run "script/delayed_job restart RAILS_ENV=#{environment}" if file_exists?("script/delayed_job")
94
99
  rake_if_included "more:parse"
95
100
  run "compass compile" if file_exists?("config/compass.rb")
96
101
  rake_if_included "barista:brew"
97
102
  rake_if_included "asset:packager:build_all"
98
103
  rake_if_included "hoptoad:deploy RAILS_ENV=#{environment} TO=#{environment} REPO=#{repository} REVISION=#{`git log | head -1 | cut -d ' ' -f 2`}"
104
+ rake_if_included "assets:precompile"
99
105
  notify_new_relic
100
106
  callback :before_restarting_server
101
107
  restart_server
102
108
  clear_cache
109
+ callback :after_restarting_server
103
110
  end
104
111
  end
105
112
  end
@@ -1,3 +1,5 @@
1
+ require 'bundler'
2
+
1
3
  module Inploy
2
4
  module DSL
3
5
  module ClassMethods
@@ -32,10 +34,6 @@ module Inploy
32
34
  extend eval(filename.split("/").map { |word| camelize(word) }.join("::"))
33
35
  end
34
36
 
35
- def log(command)
36
- puts "Inploy => #{command}"
37
- end
38
-
39
37
  def rake(command)
40
38
  run "rake #{command}"
41
39
  end
@@ -56,8 +54,15 @@ module Inploy
56
54
  file_exists?("Gemfile")
57
55
  end
58
56
 
57
+ def say(message)
58
+ puts "Inploy => #{message}"
59
+ output = []
60
+ yield output if block_given?
61
+ output.each {|o| puts o if o =~ /\S/ }
62
+ end
63
+
59
64
  def run(command, disable_sudo = false)
60
- log command
65
+ say command
61
66
 
62
67
  Bundler.with_clean_env do
63
68
  if disable_sudo
@@ -81,7 +86,7 @@ module Inploy
81
86
 
82
87
  def secure_copy(src, dest)
83
88
  unless file_exists?(dest)
84
- log "mv #{src} #{dest}"
89
+ say "cp #{src} #{dest}"
85
90
  FileUtils.cp src, dest
86
91
  end
87
92
  end
@@ -41,9 +41,11 @@ module Inploy
41
41
  end
42
42
 
43
43
  def copy_sample_files
44
- ["example", "sample"].each do |extension|
45
- Dir.glob("config/*.#{extension}").each do |file|
46
- secure_copy file, file.gsub(".#{extension}", '')
44
+ unless skip_step?('copy_sample_files')
45
+ ["example", "sample", "template"].each do |extension|
46
+ Dir.glob("config/*.#{extension}*").each do |file|
47
+ secure_copy file, file.gsub(".#{extension}", '')
48
+ end
47
49
  end
48
50
  end
49
51
  end
@@ -57,7 +59,7 @@ module Inploy
57
59
  end
58
60
 
59
61
  def bundle_cmd
60
- "bundle install --path #{bundler_path || '~/.bundle'} --without development test cucumber"
62
+ "bundle install #{bundler_opts || '--deployment --without development test cucumber'}"
61
63
  end
62
64
 
63
65
  def bundle_install
metadata CHANGED
@@ -1,32 +1,24 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: inploy
3
- version: !ruby/object:Gem::Version
4
- hash: 57
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.9.6
5
5
  prerelease:
6
- segments:
7
- - 1
8
- - 9
9
- - 5
10
- version: 1.9.5
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Diego Carrion
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-11-18 00:00:00 Z
12
+ date: 2012-12-07 00:00:00.000000000 Z
19
13
  dependencies: []
20
-
21
14
  description:
22
15
  email: dc.rec1@gmail.com
23
- executables:
16
+ executables:
24
17
  - inploy
25
18
  extensions: []
26
-
27
19
  extra_rdoc_files: []
28
-
29
- files:
20
+ files:
21
+ - lib/inploy.rb
30
22
  - lib/inploy/cli.rb
31
23
  - lib/inploy/deploy.rb
32
24
  - lib/inploy/dsl.rb
@@ -39,46 +31,34 @@ files:
39
31
  - lib/inploy/templates/rails3.rb
40
32
  - lib/inploy/templates/rails3_push.rb
41
33
  - lib/inploy/templates/sinatra.rb
42
- - lib/inploy.rb
43
34
  - lib/tasks/inploy.rake
44
35
  - bin/inploy
45
36
  - Gemfile
46
37
  - Gemfile.lock
47
- - Rakefile
48
- - Rakefile.orig
49
38
  - README.textile
39
+ - Rakefile
50
40
  homepage: http://www.diegocarrion.com
51
41
  licenses: []
52
-
53
42
  post_install_message:
54
43
  rdoc_options: []
55
-
56
- require_paths:
44
+ require_paths:
57
45
  - lib
58
- required_ruby_version: !ruby/object:Gem::Requirement
46
+ required_ruby_version: !ruby/object:Gem::Requirement
59
47
  none: false
60
- requirements:
61
- - - ">="
62
- - !ruby/object:Gem::Version
63
- hash: 3
64
- segments:
65
- - 0
66
- version: "0"
67
- required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ! '>='
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
53
  none: false
69
- requirements:
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- hash: 3
73
- segments:
74
- - 0
75
- version: "0"
54
+ requirements:
55
+ - - ! '>='
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
76
58
  requirements: []
77
-
78
59
  rubyforge_project: inploy
79
- rubygems_version: 1.8.10
60
+ rubygems_version: 1.8.24
80
61
  signing_key:
81
62
  specification_version: 3
82
63
  summary: Rails and Sinatra deployment made easy
83
64
  test_files: []
84
-
@@ -1,63 +0,0 @@
1
- require 'rubygems'
2
- require 'rubygems/specification'
3
- require 'rake'
4
- require 'rake/gempackagetask'
5
- require 'rspec/core/rake_task'
6
-
7
- GEM = "inploy"
8
- <<<<<<< HEAD
9
- GEM_VERSION = "1.9.3"
10
- =======
11
- GEM_VERSION = "1.9.2"
12
- >>>>>>> bumped to 1.9.2
13
- SUMMARY = "Rails and Sinatra deployment made easy"
14
- AUTHOR = "Diego Carrion"
15
- EMAIL = "dc.rec1@gmail.com"
16
- HOMEPAGE = "http://www.diegocarrion.com"
17
-
18
- spec = Gem::Specification.new do |s|
19
- s.name = GEM
20
- s.version = GEM_VERSION
21
- s.platform = Gem::Platform::RUBY
22
- s.summary = SUMMARY
23
- s.files = FileList['lib/**/*','bin/*', '[A-Z]*'].to_a
24
- s.executables << "inploy"
25
-
26
- s.author = AUTHOR
27
- s.email = EMAIL
28
- s.homepage = HOMEPAGE
29
-
30
- s.rubyforge_project = GEM # GitHub bug, gem isn't being build when this miss
31
- end
32
-
33
- RSpec::Core::RakeTask.new :spec do |t|
34
- t.rspec_opts = %w(-fp --color)
35
- end
36
-
37
- Rake::GemPackageTask.new(spec) do |pkg|
38
- pkg.gem_spec = spec
39
- end
40
-
41
- desc "Install the gem locally"
42
- task :install => [:package] do
43
- sh %{sudo gem install pkg/#{GEM}-#{GEM_VERSION}}
44
- end
45
-
46
- desc "Create a gemspec file"
47
- task :make_spec do
48
- File.open("#{GEM}.gemspec", "w") do |file|
49
- file.puts spec.to_ruby
50
- end
51
- end
52
-
53
- desc "Run all examples with RCov"
54
- RSpec::Core::RakeTask.new :spec do |t|
55
- t.rcov = true
56
- t.rcov_opts = ['--no-html', '-T', '--exclude', 'spec']
57
- end
58
-
59
- desc "Run specs with all the Ruby versions supported"
60
- task :build do
61
- system "rvm 1.8.7 specs"
62
- system "rvm 1.9.2 specs"
63
- end