Module: Capistrano::DSL
Defined Under Namespace
Modules: Env, Paths, Stages
Instance Method Summary
collapse
Methods included from Stages
#stage_definitions, #stage_set?, #stages
Methods included from Paths
#asset_timestamp, #current_path, #deploy_config_path, #deploy_path, #deploy_to, #join_paths, #linked_dir_parents, #linked_dirs, #linked_file_dirs, #linked_files, #map_dirnames, #now, #release_path, #releases_path, #repo_path, #repo_url, #revision_log, #set_release_path, #shared_path, #stage_config_path
Methods included from Env
#asset_timestamp, #env, #release_roles, #release_timestamp, #role_properties, #roles
#after, #before, #default_tasks, #define_remote_file_task, #deploying?, #ensure_stage, #exit_deploy_because_of_exception, #tasks_without_stage_dependency
Instance Method Details
#execute ⇒ Object
Catch common beginner mistake and give a helpful error message on stderr
80
81
82
83
84
85
86
87
88
89
90
91
92
|
# File 'lib/capistrano/dsl.rb', line 80
def execute(*)
file, line, = caller.first.split(":")
colors = SSHKit::Color.new($stderr)
$stderr.puts colors.colorize("Warning: `execute' should be wrapped in an `on' scope in #{file}:#{line}.", :red)
$stderr.puts
$stderr.puts " task :example do"
$stderr.puts colors.colorize(" on roles(:app) do", :yellow)
$stderr.puts " execute 'whoami'"
$stderr.puts colors.colorize(" end", :yellow)
$stderr.puts " end"
$stderr.puts
raise NoMethodError, "undefined method `execute' for main:Object"
end
|
#invoke(task_name, *args) ⇒ Object
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/capistrano/dsl.rb', line 14
def invoke(task_name, *args)
task = Rake::Task[task_name]
if task && task.instance_variable_get(:@already_invoked)
file, line, = caller.first.split(":")
colors = SSHKit::Color.new($stderr)
$stderr.puts colors.colorize("Skipping task `#{task_name}'.", :yellow)
$stderr.puts "Capistrano tasks may only be invoked once. Since task `#{task}' was previously invoked, invoke(\"#{task_name}\") at #{file}:#{line} will be skipped."
$stderr.puts "If you really meant to run this task again, use invoke!(\"#{task_name}\")"
$stderr.puts colors.colorize("THIS BEHAVIOR MAY CHANGE IN A FUTURE VERSION OF CAPISTRANO. Please join the conversation here if this affects you.", :red)
$stderr.puts colors.colorize("https://github.com/capistrano/capistrano/issues/1686", :red)
end
task.invoke(*args)
end
|
#invoke!(task_name, *args) ⇒ Object
29
30
31
32
33
|
# File 'lib/capistrano/dsl.rb', line 29
def invoke!(task_name, *args)
task = Rake::Task[task_name]
task.reenable
task.invoke(*args)
end
|
#local_user ⇒ Object
60
61
62
|
# File 'lib/capistrano/dsl.rb', line 60
def local_user
fetch(:local_user)
end
|
#lock(locked_version) ⇒ Object
#on(hosts, options = {}, &block) ⇒ Object
rubocop:disable Security/MarshalLoad
69
70
71
72
|
# File 'lib/capistrano/dsl.rb', line 69
def on(hosts, options={}, &block)
subset_copy = Marshal.dump(Configuration.env.filter(hosts))
SSHKit::Coordinator.new(Marshal.load(subset_copy)).each(options, &block)
end
|
#revision_log_message ⇒ Object
47
48
49
50
51
52
53
54
|
# File 'lib/capistrano/dsl.rb', line 47
def revision_log_message
fetch(:revision_log_message,
t(:revision_log_message,
branch: fetch(:branch),
user: local_user,
sha: fetch(:current_revision),
release: fetch(:release_timestamp)))
end
|
#rollback_log_message ⇒ Object
56
57
58
|
# File 'lib/capistrano/dsl.rb', line 56
def rollback_log_message
t(:rollback_log_message, user: local_user, release: fetch(:rollback_timestamp))
end
|
#run_locally(&block) ⇒ Object
rubocop:enable Security/MarshalLoad
75
76
77
|
# File 'lib/capistrano/dsl.rb', line 75
def run_locally(&block)
SSHKit::Backend::Local.new(&block).run
end
|
#scm ⇒ Object
39
40
41
|
# File 'lib/capistrano/dsl.rb', line 39
def scm
fetch(:scm)
end
|
#sudo(*args) ⇒ Object
43
44
45
|
# File 'lib/capistrano/dsl.rb', line 43
def sudo(*args)
execute :sudo, *args
end
|
#t(key, options = {}) ⇒ Object
35
36
37
|
# File 'lib/capistrano/dsl.rb', line 35
def t(key, options={})
I18n.t(key, **options.merge(scope: :capistrano))
end
|