Class: EY::Serverside::DependencyManager::Composer

Inherits:
Base
  • Object
show all
Defined in:
lib/engineyard-serverside/dependency_manager/composer.rb

Instance Attribute Summary

Attributes inherited from Base

#config, #runner, #servers, #shell

Instance Method Summary collapse

Methods inherited from Base

#bundler_config, #check_ey_config, #check_node_npm, #check_ruby_bundler, #clean_bundle_on_system_version_change, detect, #gemfile?, #initialize, #lockfile, #rails_version, #uses_sqlite3?, #write_system_version

Constructor Details

This class inherits a constructor from EY::Serverside::DependencyManager::Base

Instance Method Details

#check ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/engineyard-serverside/dependency_manager/composer.rb', line 9

def check
  unless composer_available?
    raise EY::Serverside::RemoteFailure.new("composer.#{lock_or_json} detected but composer not available!")
  end

  if composer_json? && !composer_lock?
    shell.warning <<-WARN
composer.json found but composer.lock missing!
This may result in different versions of packages
being installed than what you tested with.

To fix this problem, commit your composer.lock to the repository and redeploy.
    WARN
  end
end

#composer_available? ⇒ Boolean

Returns:

  • (Boolean)


52
53
54
55
56
57
58
59
# File 'lib/engineyard-serverside/dependency_manager/composer.rb', line 52

def composer_available?
  begin
    run "command -v composer > /dev/null"
    return true
  rescue EY::Serverside::RemoteFailure
    return false
  end
end

#composer_install ⇒ Object



44
45
46
# File 'lib/engineyard-serverside/dependency_manager/composer.rb', line 44

def composer_install
    run "composer install --no-interaction --working-dir #{paths.active_release}"
end

#composer_json? ⇒ Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/engineyard-serverside/dependency_manager/composer.rb', line 40

def composer_json?
  paths.composer_json.exist?
end

#composer_lock? ⇒ Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/engineyard-serverside/dependency_manager/composer.rb', line 36

def composer_lock?
  paths.composer_lock.exist?
end

#composer_selfupdate ⇒ Object



48
49
50
# File 'lib/engineyard-serverside/dependency_manager/composer.rb', line 48

def composer_selfupdate
    run "composer self-update"
end

#detected? ⇒ Boolean

Returns:

  • (Boolean)


5
6
7
# File 'lib/engineyard-serverside/dependency_manager/composer.rb', line 5

def detected?
  composer_lock? || composer_json?
end

#install ⇒ Object



25
26
27
28
29
30
# File 'lib/engineyard-serverside/dependency_manager/composer.rb', line 25

def install
  shell.status "Checking for composer updates..."
  composer_selfupdate
  shell.status "Installing composer packages (composer.#{lock_or_json} detected)"
  composer_install
end

#lock_or_json ⇒ Object



32
33
34
# File 'lib/engineyard-serverside/dependency_manager/composer.rb', line 32

def lock_or_json
  composer_lock? ? 'lock' : 'json'
end