Class: PoiseApplication::Resources::Application::Resource

Inherits:
Chef::Resource
  • Object
show all
Defined in:
lib/poise_application/resources/application.rb

Overview

An ‘application` resource to manage application deployment.

Examples:

application '/srv/myapp' do
  git '...'
  poise_service 'myapp' do
    command '/srv/myapp/main'
  end
end

Since:

  • 5.0.0

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Resource

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Run the DSL rewire when the resource object is created.

Since:

  • 5.0.0



78
79
80
81
# File 'lib/poise_application/resources/application.rb', line 78

def initialize(*args)
  super
  _rewire_dsl! if node
end

Instance Attribute Details

#action_on_updateString, ...

Action to run when any subresource is updated. Defaults to ‘:restart`.

Returns:

  • (String, Symbol, nil, false)


70
# File 'lib/poise_application/resources/application.rb', line 70

attribute(:action_on_update, kind_of: [Symbol, String, NilClass, FalseClass], default: :restart)

#action_on_update_immediatelyBoolean

Run the #action_on_update notification with ‘:immediately`.

Returns:

  • (Boolean)


74
# File 'lib/poise_application/resources/application.rb', line 74

attribute(:action_on_update_immediately, equal_to: [true, false], default: false)

#environmentHash<String, String>

Environment variables to set for the whole application.

Returns:

  • (Hash<String, String>)


56
# File 'lib/poise_application/resources/application.rb', line 56

attribute(:environment, kind_of: Hash, default: lazy { Mash.new })

#groupString

System group that will own the application. This can be overriden in individual subresources.

Returns:

  • (String)


66
# File 'lib/poise_application/resources/application.rb', line 66

attribute(:group, kind_of: String)

#ownerString

System user that will own the application. This can be overriden in individual subresources.

Returns:

  • (String)


61
# File 'lib/poise_application/resources/application.rb', line 61

attribute(:owner, kind_of: String)

#pathString

Application base path.

Returns:

  • (String)


52
# File 'lib/poise_application/resources/application.rb', line 52

attribute(:path, kind_of: String, name_attribute: true)

Instance Method Details

#app_stateMash

Application-specific state values used as a way to communicate between subresources.

Examples:

if new_resource.parent && new_resource.parent.app_state['gemfile_path']

Returns:

  • (Mash)

Since:

  • 5.0.0



89
90
91
# File 'lib/poise_application/resources/application.rb', line 89

def app_state
  @app_state ||= Mash.new(environment: environment)
end

#register_subresource(resource) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Override Container#register_subresource to add our action_on_update.

Since:

  • 5.0.0



96
97
98
99
100
101
102
103
# File 'lib/poise_application/resources/application.rb', line 96

def register_subresource(resource)
  super.tap do |added|
    if added && action_on_update
      Chef::Log.debug("[#{self}] Registering #{action_on_update_immediately ? 'immediate ' : ''}#{action_on_update} notification from #{resource}")
      resource.notifies action_on_update.to_sym, self, (action_on_update_immediately ? :immediately : :delayed)
    end
  end
end