【问题标题】:How to deploy my Webpackered Rails app with Capistrano and Yarn如何使用 Capistrano 和 Yarn 部署我的 Webpackered Rails 应用程序
【发布时间】:2017-03-24 05:13:27
【问题描述】:

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 as webmaster 来通过 shell 命令确认 env 是正确的。

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

node --version
v7.0.0

which yarn
/usr/bin/yarn

yarn --version
0.21.3

我假设环境变量不正确,但不知道环境变量为什么不正确。

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

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

【问题讨论】:

  • 这个 Rake/Rails 命令说明了什么? rake webpacker:yarn_install

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


【解决方案1】:

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

这意味着您可能需要评估 Nodeenv 脚本作为运行命令的一部分。谢天谢地,看起来有一个宝石:https://github.com/platanus/capistrano-nodenv

您可能需要将bin/yarn 添加到:nodenv_map_bins。比如:

append :nodenv_map_bins, 'bin/yarn'

【讨论】:

  • 感谢您的建议,但是我遇到了另一个问题。上面添加了问题。
【解决方案2】:

您需要将纱线添加到您的路径或创建一个别名。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 2017-12-19
    相关资源
    最近更新 更多