微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Rails db:migrate 命令在 Capistrano 运行期间失败

如何解决Rails db:migrate 命令在 Capistrano 运行期间失败

我已经使用 Capistrano 设置服务器并且一切正常,但我注意到它没有运行迁移,所以我添加required 'capistrano/migrations',现在它正在运行但它继续失败我已经设置了环境变量,并且我过去也做过同样的事情,我从来不需要做这个额外的步骤。但是在 Capistrano 3.16 中我面临这个问题。这是我在 Rails 6 项目中使用的 gem。

  gem 'capistrano','~> 3.16'
  gem 'capistrano-bundler','~> 2.0'
  gem 'capistrano-rails','~> 1.6'
  gem 'capistrano-chruby','~> 0.1.2'

我的文件

require 'capistrano/setup'

require 'capistrano/deploy'
require 'capistrano/chruby'
require 'capistrano/bundler'
require "capistrano/scm/git"
install_plugin Capistrano::SCM::Git

require 'capistrano/rails/migrations' # I added to migration run
Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }

我的 config/deploy.rb 文件

lock '~> 3.16.0'
set :application,'warehouse'
set :repo_url,'git@github.com:kamalpanhwar/warehouse.git'
set :passenger_restart_with_touch,true
set :deploy_to,'/home/deploy/warehouse'

append :linked_files,'config/master.key'
append :linked_files,'config/credentials.yml.enc'
append :linked_files,'config/database.yml'
set :chruby_ruby,'ruby-2.7.2'

after "deploy","deploy:migrate"

以下是我的production.rb文件

set :stage,:production
set :rails_env,:production
set :branch,'production'
set :migration_role,:app
set :user,"deploy"

server 'dwh.actionplanner.com',user: 'deploy',roles: %w{app db web}

它给了我以下错误

 01 /usr/local/bin/chruby-exec ruby-2.7.2 -- bundle exec rake db:migrate
      01 rake aborted!
      01 ActiveRecord::ConnectionNotEstablished: fe_sendauth: no password supplied

但是当我使用命令在生产中运行迁移时,当我添加 ENV_RAILS=production 时它工作正常,我还添加了该环境变量。如果我像这样运行上面的错误命令

/usr/local/bin/chruby-exec ruby-2.7.2 -- bundle exec rake db:migrate RAILS_ENV=production

它工作正常,任何建议为什么会发生这种情况,因为上次我很少使用 RVM 进行部署并且一切正常,但这次我收到此错误。我在这里使用 chruby 不确定是不是因为它。但似乎错误与 RAILS_ENV 有关,但我已经在部署配置中设置环境。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。