Module: AssOle::AppExtension

Defined in:
lib/ass_ole/app_extension.rb,
lib/ass_ole/app_extension/version.rb

Overview

Provides features for hot plug a ConfigurationExtension to 1C:Enterprise application instance (aka infobase) and some more.

Examples:

Plug extension

require 'ass_maintainer/info_base'

# Describe 1C application instance
ib = AssMaintainer::InfoBase.new('app_name', 'File="path"')

extension = AssOle::AppExtension.plug(ib, FooExtension, 'safe profile name')

extension.plugged? # => true

Define own extension class

class FooExtension < AssOle::AppExtension::Abstract::Extension

 VERSION = '1.1.1'.freeze

 def path
   File.expand_path '../foo_extension.cfe', __FILE__
 end

 # Override abstract method
 # must returns WIN32OLE object(1C extension BinaryData)'
 def data
   newObject('BinaryData', real_win_path(path))
 end

 # Override abstract method
 # must returns `Gem::Requirement` 1C platform version requirement
 def platform_require
   Gem::Requirement.new '~> 8.3.10'
 end

 # Override abstract method
 # must returns `Hash` :1c_app_name => (Gem::Requirement|String '~> 1.2.4')
 # or nil for independent extension
 def app_requirements
   {Accounting: '~> 3.0.56',
    AccountingCorp: '~> 3.0.56'}
 end

 # Override abstract method
 # must returns extension name
 def name
   'FooExtension'
 end

 # Override abstract method
 # must returns extension version
 def version
   VERSION
 end
end

Explore infobase extensions

require 'ass_maintainer/info_base'

# Describe 1C application instance
ib = AssMaintainer::InfoBase.new('app_name', 'File="path"')

# Get all extensions and check all is plugged
AssOle::AppExtension::Spy.explore(ib).each do |spy|
  logger.error "#{spy.name} isn't plugged because:\n - "\
    "#{spy.apply_errors.map(&:Description).join(' - ')}"\
    unless spy.plugged?
end

Defined Under Namespace

Modules: Abstract, Plug Classes: ApplyError, IncompatibleError, Spy

Constant Summary collapse

VERSION =
"0.1.2"

Class Method Summary collapse

Class Method Details

.plug(info_base, ext_klass, safe_mode = true) ⇒ ext_klass

Plug extension to info_base

Parameters:

  • info_base (AssMaintainer::InfoBase)

    instance

  • ext_klass (Class)
  • safe_mode (true false nil String) (defaults to: true)

    define of safe mode for an extension. For more info see 1C docomentation for SafeMode property of ConfigurationExtension object

Returns:

  • (ext_klass)

    instance



491
492
493
# File 'lib/ass_ole/app_extension.rb', line 491

def self.plug(info_base, ext_klass, safe_mode = true)
  Plug.new(info_base).exec(ext_klass, safe_mode)
end