Sha256: 8ea6009fa5afe1314c516a9c63be7468fbde076c17c22585a2c3fe80b777a0ff

Contents?: true

Size: 964 Bytes

Versions: 25

Compression:

Stored size: 964 Bytes

Contents

module Capistrano
  # This module extends a Rake::Task to freeze it to prevent it from being
  # enhanced. This is used to prevent users from enhancing a task at the wrong
  # point of Capistrano's boot process, which can happen if a Capistrano plugin
  # is loaded in deploy.rb by mistake (instead of in the Capfile).
  #
  # Usage:
  #
  # task = Rake.application["load:defaults"]
  # task.invoke
  # task.extend(Capistrano::ImmutableTask) # prevent further modifications
  #
  module ImmutableTask
    def self.extended(task)
      task.freeze
    end

    def enhance(*args, &block)
      $stderr.puts <<-MESSAGE
ERROR: #{name} has already been invoked and can no longer be modified.
Check that you haven't loaded a Capistrano plugin in deploy.rb or a stage
(e.g. deploy/production.rb) by mistake.
Plugins must be loaded in the Capfile to initialize properly.
MESSAGE

      # This will raise a frozen object error
      super(*args, &block)
    end
  end
end

Version data entries

25 entries across 25 versions & 2 rubygems

Version Path
capistrano-3.19.2 lib/capistrano/immutable_task.rb
capistrano-3.19.1 lib/capistrano/immutable_task.rb
capistrano-3.19.0 lib/capistrano/immutable_task.rb
capistrano-3.18.1 lib/capistrano/immutable_task.rb
honeybadger-5.4.0 vendor/bundle/ruby/3.2.0/gems/capistrano-3.18.0/lib/capistrano/immutable_task.rb
honeybadger-5.3.0 vendor/bundle/ruby/3.2.0/gems/capistrano-3.18.0/lib/capistrano/immutable_task.rb
capistrano-3.18.0 lib/capistrano/immutable_task.rb
capistrano-3.17.3 lib/capistrano/immutable_task.rb
capistrano-3.17.2 lib/capistrano/immutable_task.rb
capistrano-3.17.1 lib/capistrano/immutable_task.rb
capistrano-3.17.0 lib/capistrano/immutable_task.rb
capistrano-3.16.0 lib/capistrano/immutable_task.rb
capistrano-3.15.0 lib/capistrano/immutable_task.rb
capistrano-3.14.1 lib/capistrano/immutable_task.rb
capistrano-3.14.0 lib/capistrano/immutable_task.rb
capistrano-3.13.0 lib/capistrano/immutable_task.rb
capistrano-3.12.1 lib/capistrano/immutable_task.rb
capistrano-3.12.0 lib/capistrano/immutable_task.rb
honeybadger-4.5.3 vendor/bundle/ruby/2.6.0/gems/capistrano-3.11.0/lib/capistrano/immutable_task.rb
capistrano-3.11.2 lib/capistrano/immutable_task.rb