如何使用Capistrano和Yarn部署我的Webpackered Rails应用程序

时间:2017-03-24 05:13:28

标签: ruby-on-rails amazon-ec2 capistrano3 yarnpkg

capistrano和Yarn的问题

我尝试使用此capistrano脚本将我的webpackered rails应用程序部署到AWS,

namespace :webpacker do
  task :install do
    on roles(:web) do
      within release_path do
        execute "bin/yarn"
      end
    end
  end
end

after 'bundler:install', 'webpacker:install'

但是我得到了以下日志,部署失败了。

  INFO [74b2160e] Running /usr/bin/env bin/yarn as webmaster@example.com
 DEBUG [74b2160e] Command: cd /data/example/releases/20170324031517 && ( export PATH="/usr/local/bin:$PATH" RBENV_ROOT="/usr/local/rbenv" RBENV_VERSION="2.4.0" NODENV_ROOT="/usr/local/nodenv" NODENV_VERSION="7.0.0" ; /usr/bin/env bin/yarn )
 DEBUG [74b2160e]   Node version 0.10.48 is not supported, please use Node.js 4.0 or higher.

所以,我使用ssh作为webmaster来确认env是否正确遵循shell命令。

which node
/usr/local/nodenv/shims/node

node --version
v7.0.0

which yarn
/usr/bin/yarn

yarn --version
0.21.3

我认为env变量不正确,但不知道为什么env变量不正确。

你会教我如何解决这个问题吗?

Node version 0.10.48 is not supported, please use Node.js 4.0 or higher

加入

添加append :nodenv_map_bins, 'bin/yarn'后,会出现另一个问题。

INFO [aab774c8] Running NODENV_ROOT=/usr/local/nodenv NODENV_VERSION=7.0.0 /usr/local/nodenv/bin/nodenv exec bin/yarn as webmaster@example.com

 DEBUG [aab774c8] Command: cd /data/example/releases/20170324175015 && ( export PATH="/usr/local/bin:$PATH" RBENV_ROOT="/usr/local/rbenv" RBENV_VERSION="2.4.0" NODENV_ROOT="/usr/local/nodenv" NODENV_VERSION="7.0.0" RAILS_ENV="staging" ; NODENV_ROOT=/usr/local/nodenv NODENV_VERSION=7.0.0 /usr/local/nodenv/bin/nodenv exec bin/yarn )

 DEBUG [aab774c8]   nodenv: bin/yarn: command not found

2 个答案:

答案 0 :(得分:0)

问题似乎是您正在使用Nodenv。 Capistrano在非登录,非交互式shell中运行:http://capistranorb.com/documentation/advanced-features/ptys/因此,Capistrano使用系统节点,而不是.bash_profile中的被覆盖版本。

这意味着您可能需要将Nodenv脚本作为运行命令的一部分进行评估。值得庆幸的是,看起来有一个宝石:https://github.com/platanus/capistrano-nodenv

您可能需要将bin/yarn添加到:nodenv_map_bins。类似的东西:

append :nodenv_map_bins, 'bin/yarn'

答案 1 :(得分:0)

您需要在路径中添加纱线或创建别名。

这也有一个宝石:https://github.com/ManifoldScholar/capistrano-yarn