Sha256: 597926325f26bd0d0eeef60713cb1151389e5c78017401f562133ebb08371549

Contents?: true

Size: 1.25 KB

Versions: 7

Compression:

Stored size: 1.25 KB

Contents

module Writefully
  module Workers
    class Handyman < BaseWorker
      include Helpers::Handyman::Builder

      attr_reader :site

      def build
        @site      = Site.where(id: message[:site_id]).first
        @hammer    = Tools::Hammer.new_link(message.merge({ domain: site.domain }))
        # create the repository
        repo = @hammer.future.forge

        # add sample content
        @initializer = Tools::Initializer.new_link(message.merge({ ssh_url: repo.value.ssh_url }))
        initialize_sample_content

        # add web hook
        hook = @hammer.future.add_hook_for(repo.value.name)
        complete_site_setup(repo.value, hook.value)
      ensure
        @hammer.terminate
        @initializer.terminate
        close_db_connection!
      end

      def synchronize
        @synchronizer = Tools::Synchronizer.new_link(message)
        synced = @synchronizer.future.sync
        Writefully.logger.info "Synchronized #{message[:site_slug]}" if synced.value
      ensure
        @synchronizer.terminate
      end

      def on_death actor, reason
        if site
          Writefully.redis.with { |c| s.sadd "site:#{site.id}:errors", reason.message }
          site.update_attributes(processing: false, healty: false)
        end
      end

    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
writefully-0.4.6 lib/writefully/workers/handyman.rb
writefully-0.4.5 lib/writefully/workers/handyman.rb
writefully-0.4.4 lib/writefully/workers/handyman.rb
writefully-0.4.2 lib/writefully/workers/handyman.rb
writefully-0.4.1 lib/writefully/workers/handyman.rb
writefully-0.4.0 lib/writefully/workers/handyman.rb
writefully-0.3.6 lib/writefully/workers/handyman.rb