如何在Capistrano v3服务器上运行shell命令?
我是Capistrano的新手,我尝试过使用Capistrano的DSL在服务器上运行shell命令('运行','执行'等),但似乎已经被弃用了。 经过search和searchfunction相当,我仍然迷路了。
当前代码:
desc 'Do something' task :do_something execute 'echo sometext' end
输出:
cap aborted! undefined method `execute' for main:Object /Users/Justin/Dropbox/xxxx/xxxx/xxxx/Capfile:45:in `block (2 levels) in <top (required)>' /Users/Justin/.rvm/gems/ruby-2.0.0-p247/bundler/gems/capistrano-2dc1627838f9/lib/capistrano/application.rb:12:in `run' /Users/Justin/.rvm/gems/ruby-2.0.0-p247/bundler/gems/capistrano-2dc1627838f9/bin/cap:3:in `<top (required)>' /Users/Justin/.rvm/gems/ruby-2.0.0-p247/bin/cap:23:in `load' /Users/Justin/.rvm/gems/ruby-2.0.0-p247/bin/cap:23:in `<main>' /Users/Justin/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `eval' /Users/Justin/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `<main>' Tasks: TOP => deploy:do_something
在Capistrano v3中,您必须通过调用主机名列表来指定要运行代码的位置,例如
task :execute_on_server do on "root@example.com" do execute "some_command" end end
如果您设置了angular色,则可以使用roles
方法作为便利:
role :mailserver, "root@mail.example.com" task :check_mail do on roles(:mailserver) do execute "some_command" end end
这里有一些v3文档: http : //www.capistranorb.com/