Class: Shipit::Job
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Shipit::Job
- Defined in:
- lib/shipit/job.rb
Class Method Summary collapse
-
.enable_mock! ⇒ Object
Mocks cloning and deploying.
- .start(params) ⇒ Object
Instance Method Summary collapse
-
#branch ⇒ Object
TODO: Make configurable.
- #clone ⇒ Object
- #command ⇒ Object
- #deploy ⇒ Object
-
#run ⇒ Object
Runs the deploy.
Class Method Details
.enable_mock! ⇒ Object
Mocks cloning and deploying
53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/shipit/job.rb', line 53 def self.enable_mock! self.class_eval do def clone Kernel.system <<-SHELL rm -rf #{dir} mkdir -p #{File.dirname(dir)} cp -r #{File.('../../../spec/fixtures/repo', __FILE__)} #{dir} SHELL end end end |
.start(params) ⇒ Object
8 9 10 11 12 |
# File 'lib/shipit/job.rb', line 8 def self.start(params) repo = Repository.find_by_name(params[:name]) env = Environment.find_or_create(repo, (params[:env] || "production")) new(:environment => env).tap { |job| job.save }.run end |
Instance Method Details
#branch ⇒ Object
TODO: Make configurable
44 45 46 |
# File 'lib/shipit/job.rb', line 44 def branch "master" end |
#clone ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/shipit/job.rb', line 20 def clone Kernel.system <<-SHELL mkdir -p #{dir} cd #{dir} if [ ! -d './.git' ]; then git init git remote add origin #{repository.uri} fi git fetch -q origin git reset -q --hard origin/#{branch} SHELL end |
#command ⇒ Object
48 49 50 |
# File 'lib/shipit/job.rb', line 48 def command "cd #{dir}; #{environment.command}" end |
#deploy ⇒ Object
33 34 35 36 37 38 39 40 41 |
# File 'lib/shipit/job.rb', line 33 def deploy self.output = "" Bundler.with_clean_env do IO.popen(command, :err => [:child, :out]) do |io| io.each { |line| self.output << line } end end self.save end |
#run ⇒ Object
Runs the deploy
15 16 17 18 |
# File 'lib/shipit/job.rb', line 15 def run self.clone self.deploy end |