【问题标题】:Cap task fetches content locallyCap 任务在本地获取内容
【发布时间】:2013-03-08 08:36:33
【问题描述】:

我猜这部分有问题。

check = %x( cat '/etc/apache2/ports.conf' )

我想从 /etc/apache2/ports.conf 获取内容并检查端口 8581 是否已被监听,这是我的代码,它是部署后的上限任务。

desc "Ports Updation"
task :portsUpdation do
   # Editing /etc/apache2/ports.conf
    ports_file = "/etc/apache2/ports.conf"
    run "#{try_sudo} chmod -R 0777 #{ports_file}" 

    check = %x( cat '/etc/apache2/ports.conf' )
    puts check

    unless /Listen 8581/.match check
        run "#{try_sudo} sed -i '$ a\Listen 8581\n' #{ports_file}"
    end
    run "#{try_sudo} chmod -R 0644 #{ports_file}"
end

我运行了这个 cap 任务,变量“check”总是打印我本地的 ports.conf。我想要的是来自服务器的内容。

当我运行这个 cap 任务时,我被问到服务器密码。我也尝试过 cap deploy。结果相同。可能是什么pblm。

【问题讨论】:

    标签: ruby linux capistrano


    【解决方案1】:

    如果你想远程执行命令,你需要像在其他地方一样调用run

    【讨论】:

    • 其实我在变量检查中需要run()的输出。幸运的是,有一个方法 capture() 可以满足我的确切需求。不管怎么说,还是要谢谢你。这似乎是一个简单的问题,但没有人给出正确的答案..pity
    【解决方案2】:
    check = capture("cat /etc/apache2/ports.conf")
    

    成功了。该方法 capture() 返回传递的 cmd 的结果。

    【讨论】:

      猜你喜欢
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 2017-07-07
      • 2013-07-01
      • 1970-01-01
      • 2021-03-04
      • 2012-04-16
      • 1970-01-01
      相关资源
      最近更新 更多