簡単な質問です。したがって、capistrano の deploy.rb スクリプトは次のようになります。ここで、キャプチャ機能を簡単に使用できます。
namespace :mycompany do
def some_function()
mylog = capture("some_command")
end
desc <<-DESC
some task description
DESC
task :some_task do
mylog = capture("some_command")
end
end
ただし、クラスでメソッドを使用すると、次のようになります。
namespace :mycompany do
class SomeClass
def self.some_static_method()
mylog = capture("some_command")
end
end
end
それは惨めに失敗します:
/config/deploy.rb:120:in `some_static_method': undefined method `capture' for #<Class:0x000000026234f8>::SomeClass (NameError)
それをどうするか?このメソッドは静的ではないようです:(ここにあります(カピストラーノソース):
module Capistrano
class Configuration
module Actions
module Inspect
# Executes the given command on the first server targetted by the
# current task, collects it's stdout into a string, and returns the
# string. The command is invoked via #invoke_command.
def capture(command, options={})
...