0

私の標準deploy.rbファイルに名前空間のセットがあるとしましょう。渡す変数に基づいて RPM パッケージを一覧表示する一般的なタスクがあります。captureこれをそのまま実行すると、未定義のメソッドであると不平を言います。そのメソッドをdeploy.rbファイル内に含めると、問題なく動作します。

私はRubyとOOPが初めてなので、これを間違った方法で行っていると確信しています。:-)

deploy.rb

load 'config/module'

namespace :lp_app do
desc "LP tasks"

co = Tasks::Commands.new()

    task :list do
        co.list_pkg("LP")
    end
end

モジュール.rb

module Tasks
    class Commands
        def list_pkg(component)
            File.open("#{component}.file.list", "r").each_line do |line|
                pkg_name = "#{line}".chomp

                set :server_pkg, capture("rpm -q #{pkg_name}")

                puts "#{server_pkg}"
            end
        end
    end
end
4

1 に答える 1

0

Capistranoの外部でCapistano固有のコマンドを使用しようとしています。コマンドラインで実行した結果に変数を設定する場合は、バックティック( `)を試してください。

module Tasks
    class Commands
        def list_pkg(component)
            File.open("#{component}.file.list", "r").each_line do |line|
                pkg_name = "#{line}".chomp

                server_pkg = `rpm -q #{pkg_name}`

                puts server_pkg
            end
        end
    end
end
于 2012-08-21T01:16:51.033 に答える