【问题标题】:task in Capistrano 3 cannot find RVMCapistrano 3 中的任务找不到 RVM
【发布时间】:2015-08-19 10:33:33
【问题描述】:

几个月来我一直在使用 Capistrano 3 部署一个 PHP 应用程序,它运行良好。最近,我们决定开始将 Sass 用于样式表,我现在正在尝试部署这些更改。

我正在尝试编写一个在其余部署内容完成后运行的任务,该任务使用 Sass gem 将 scss 文件转换为 css。

namespace :deploy do

  after :finished, :assets do
    on roles(:app), in: :sequence, wait: 5 do
      within release_path do
        # process sass files to css
        execute "sass #{release_path}/styles/test.scss #{release_path}/styles/test.css"
      end
    end
  end

end

我在服务器上使用 RVM,并将 sass gem 安装在特定的 gemset 中。项目根目录中还有一个 .rvmrc 文件,当您 cd 进入 capistrano 创建的“当前”目录时,它会加载正确的 gemset。

当我部署时,它在我的新任务中失败,说它找不到 sass。

stderr: bash: sass: command not found

我可以使用 Capistrano 和 cd 部署到“当前”目录的用户身份登录服务器,并在任务中运行相同的命令(将 #{release_path} 替换为实际路径)并且它可以工作很好。

我尝试过的事情:

  1. 用以下代码重写执行命令:

rvm 使用 2.1.5@deployer && sass #{release_path}/styles/test.scss #{release_path}/styles/test.css

  1. 编写一个可由部署者用户访问的 bash 脚本,该脚本加载 gemset 然后运行 ​​sass 命令(当我在任何目录中登录到服务器时运行新脚本时有效,从 capistrano 任务调用时无效)

  2. 使用 capistrano-rvm 插件(添加到 Gemfile,需要在 Capfile 中)设置 RVM gemset - 希望它会在运行任何命令之前加载 gemset。

我已经多次使用 Capistrano 部署 Rails 应用程序,并且总是使用处理预编译和诸如此类的资产插件......这是我用于部署 PHP 应用程序的第一个项目,也许是我第一次尝试手动运行 capistrano 任务,该任务使用安装在带有 RVM 的服务器上的 ruby​​gem。

是否可以在不使用默认 rails 插件的情况下运行依赖于特定 gem/gemset 的任务?

感谢任何帮助。

谢谢, 京东

【问题讨论】:

    标签: ruby capistrano capistrano3 rvm-capistrano


    【解决方案1】:

    通过要求 capistrano/bundler 命令解决了这个问题,只是为了查看 capistrano 默认情况下如何运行 bundle...复制了在部署期间记录的 bundler 命令,然后对其进行了修改以适用于我想要做的事情最后删除了捆绑器插件,因为我实际上不需要部署来捆绑任何东西。

    不使用任何 capistrano 插件,您可以在 capistrano 任务执行命令前加上 gemset 的位置,如下所示:

    after :finished, :assets do
      on roles(:app), in: :sequence, wait: 5 do
        within release_path do
          execute "~/.rvm/bin/rvm ruby-2.1.5@deployer do sass #{release_path}/styles/sass/screen.scss #{release_path}/styles/screen.css"
        end
      end
    end
    

    主要区别在于以下 sn-p 为我最初尝试的实际命令的前言:

    ~/.rvm/bin/rvm ruby-2.1.5@deployer do ....
    

    显然,您可以使用任何需要指定 gemset 的命令(而不是我正在使用的 sass 命令)。

    【讨论】:

      猜你喜欢
      • 2011-10-06
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-25
      • 2013-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多