首页 > 解决方案 > Capistrano 无法读取 ENV 变量

问题描述

我正在使用 Capistrano 部署我的 Rails 应用程序。现在我m facing error below when I enter command限制生产部署`:

 ✔ 02 deploy@82.196.13.29 0.475s
04:44 webpacker:precompile
      01 $HOME/.rbenv/bin/rbenv exec bundle exec rails webpacker:clobber
(Backtrace restricted to imported tasks)
cap aborted!
Errno::ENOENT: No such file or directory - ( export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="2.5.5" RAILS_ENV="production" RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="2.5.5" RAILS_ENV="production" ; $HOME/.rbenv/bin/rbenv exec bundle exec rails webpacker:clobber )

Tasks: TOP => webpacker:precompile
(See full trace by running task with --trace)
The deploy has failed with an error: No such file or directory - ( export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="2.5.5" RAILS_ENV="production" RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="2.5.5" RAILS_ENV="production" ; $HOME/.rbenv/bin/rbenv exec bundle exec rails webpacker:clobber )

这是我的 deploy.rb 文件:lock "~> 3.11.0"

set :application, "appName"
set :repo_url, "git@github.com:githubusername/appName"

# Deploy to the user's home directory
set :deploy_to, "/home/deploy/#{fetch :application}"

set :default_env, { 
  'RBENV_ROOT' => '$HOME/.rbenv',
  'RBENV_VERSION' => '2.5.5',
  'RAILS_ENV' => 'production'
}

append :linked_dirs, 'log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', '.bundle', 'public/system', 'public/uploads'

# Only keep the last 5 releases to save disk space
set :keep_releases, 5

before "deploy:assets:precompile", "deploy:yarn_install"

namespace :deploy do
  desc 'Run rake yarn:install'
  task :yarn_install do
    on roles(:web) do
      within release_path do
        execute("cd #{release_path} && yarn install")
      end
    end
  end
end

after 'deploy:updated', 'webpacker:precompile'

我在这个应用程序中使用 Rails 5.2.3 和 Ruby 2.5.5。我还有一个文件.rbenv/home/deploy/appName其中包含以下变量:

RAILS_MASTER_KEY=ohai
SECRET_KEY_BASE=1234567890

STRIPE_PUBLIC_KEY=x
STRIPE_PRIVATE_KEY=y

我该如何解决这个问题?

标签: ruby-on-railscapistrano

解决方案


推荐阅读