class Itamae::Resource::GemPackage
Public Instance Methods
action_install(action_options)
click to toggle source
# File lib/itamae/resource/gem_package.rb, line 34 def action_install(action_options) if current.installed if attributes.version && current.version != attributes.version install! updated! end else install! updated! end end
action_uninstall(action_options)
click to toggle source
# File lib/itamae/resource/gem_package.rb, line 46 def action_uninstall(action_options) uninstall! if current.installed end
action_upgrade(action_options)
click to toggle source
# File lib/itamae/resource/gem_package.rb, line 50 def action_upgrade(action_options) return if current.installed && attributes.version && current.version == attributes.version install! updated! end
install!()
click to toggle source
# File lib/itamae/resource/gem_package.rb, line 71 def install! cmd = [*Array(attributes.gem_binary), 'install', *Array(attributes.options)] if attributes.version cmd << '-v' << attributes.version end if attributes.source cmd << '--source' << attributes.source end cmd << attributes.package_name run_command(cmd) end
installed_gems()
click to toggle source
# File lib/itamae/resource/gem_package.rb, line 57 def installed_gems gems = [] run_command([*Array(attributes.gem_binary), 'list', '-l']).stdout.each_line do |line| if /\A([^ ]+) \(([^\)]+)\)\z/ =~ line.strip name = $1 versions = $2.split(', ') gems << {name: name, versions: versions} end end gems rescue Backend::CommandExecutionError [] end
pre_action()
click to toggle source
# File lib/itamae/resource/gem_package.rb, line 11 def pre_action case @current_action when :install attributes.installed = true when :uninstall attributes.installed = false end end
set_current_attributes()
click to toggle source
# File lib/itamae/resource/gem_package.rb, line 20 def set_current_attributes installed = installed_gems.find {|g| g[:name] == attributes.package_name } current.installed = !!installed if current.installed versions = installed[:versions] if versions.include?(attributes.version) current.version = attributes.version else current.version = versions.first end end end
uninstall!()
click to toggle source
# File lib/itamae/resource/gem_package.rb, line 84 def uninstall! cmd = [*Array(attributes.gem_binary), 'uninstall', '--ignore-dependencies', '--executables', *Array(attributes.options)] if attributes.version cmd << '-v' << attributes.version else cmd << '--all' end cmd << attributes.package_name run_command(cmd) end