【问题标题】:Ruby on rails deployment with Vlad on windows在 Windows 上使用 Vlad 部署 Ruby on rails
【发布时间】:2023-03-27 14:01:01
【问题描述】:

我在 Windows 上遇到 Vlad 问题。致电rake vlad:deploy 后,我得到以下信息: uninitialized constant Fcntl::F_SETFD

谷歌搜索了一段时间后,我发现 open4 gem 存在不适合 Windows 的问题,我应该改用 popen4 gem。 我安装了它,但没有任何改变。

如何强制 vlad 使用 popen4 而不是 open4?

【问题讨论】:

标签: ruby-on-rails ruby deployment vlad-deployer


【解决方案1】:

VladCapistrano 不适用于 Microsoft Windows 系统。即使你设法让它在 Windows 下运行,你也会发现新的限制。这些工具只是很好的包装器(rake 任务),用于自动化 SCM/SSH/SFTP 任务。我知道 Capistrano 使用 xcopy.exe 来远程部署文件,但它没有 rsyncscp 强大.

如果您仍然感兴趣,open4 依赖项在源代码上是硬编码的,使其运行的唯一方法是修改代码。

http://hitsquad.rubyforge.org/svn/vlad/2.0.0/lib/rake_remote_task.rb

...
require 'open4'
...
##
# Rake::RemoteTask is a subclass of Rake::Task that adds
# remote_actions that execute in parallel on multiple hosts via ssh.

class Rake::RemoteTask < Rake::Task

  @@current_roles = []

  include Open4
...

顺便说一句,使用 Capistrano 会简化您的生活,但正如宣传的那样,不要期望充分发挥 Capistrano 的潜力,因为它的支持很少。

【讨论】:

    【解决方案2】:

    我还没有研究过。一些可以帮助您解决问题的资源。

    open4 不能在 Windows 上运行——它是一个仅限 Unix 的库。对于 Windows 有 popen4。

    popen4 用于 Windows

    它做同样的事情......但对于 Windows。请注意, 在一个完整的管道上阻塞程序的可能性是非常有可能的 Windows 平台。

    Discussions here

    希望这会有所帮助!

    【讨论】:

      【解决方案3】:

      我能够让 capistrano 针对运行 Cygwin's sshd 作为服务的 Windows 2008 r2 机器,但不是 vlad 的 remote_task。我想知道是否可以将 remote_task 移植为使用 Ruby 的 Net::SSH 代替?

      我无法做的是让 Windows 允许我通过公钥而不是密码进行身份验证...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-29
        • 2015-08-31
        • 2012-07-26
        • 1970-01-01
        • 2017-07-28
        • 2015-10-22
        • 2010-10-07
        • 1970-01-01
        相关资源
        最近更新 更多