首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Capistrano 3在部署时未运行rails迁移

Capistrano 3在部署时未运行rails迁移
EN

Stack Overflow用户
提问于 2014-03-24 00:31:46
回答 2查看 14.7K关注 0票数 19

我想将一个应用部署到我的本地服务器上。我用的是capistrano 3

这是我的capfile

代码语言:javascript
复制
require 'capistrano/setup'
require 'capistrano/deploy'
require 'capistrano/rvm'
require 'capistrano/bundler'
require 'capistrano/rails'
#require 'capistrano/rails/migrations'
#require 'capistrano/rails/assets'


# Loads custom tasks from `lib/capistrano/tasks' if you have any defined.
Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r }

这是我的deploy.rb

代码语言:javascript
复制
# config valid only for Capistrano 3.1
lock '3.1.0'

set :application, 'ImpresaZiliani'
set :repo_url, 'francesco@10.0.1.8:repos/impresaziliani.git'
set :branch, 'master'
# Default branch is :master
# ask :branch, proc { `git rev-parse --abbrev-ref HEAD`.chomp }

# Default deploy_to directory is /var/www/my_app
set :deploy_to, '/home/francesco/impresaziliani'

# Default value for :scm is :git
set :scm, :git
set :deploy_user, "francesco"
set :rails_env, "production"

set :keep_releases, 5

namespace :deploy do
  desc 'Restart application'
  task :restart do
    on roles(:app), in: :sequence, wait: 5 do
      # Your restart mechanism here, for example:
      # execute :touch, release_path.join('tmp/restart.txt')
    end
  end

  after :publishing, :restart

  after :restart, :clear_cache do
    on roles(:web), in: :groups, limit: 3, wait: 10 do
      # Here we can do anything such as:
      # within release_path do
      #   execute :rake, 'cache:clear'
      # end
   end
  end

end

set :rvm_ruby_version, '2.1.1'
set :default_env, { rvm_bin_path: '~/.rvm/bin' }
SSHKit.config.command_map[:rake] = "#{fetch(:default_env)[:rvm_bin_path]}/rvm ruby-#                   {fetch(:rvm_ruby_version)} do bundle exec rake"

我的database.yml是正常的,因为如果我在服务器上手动运行迁移它工作,我已经尝试取消注释capistrano/rails/migrations和assets行,但没有任何变化:当我部署它运行良好,直到捆绑安装,然后没有任何警告或错误,跳到资产预编译器,不运行迁移。

我该如何解决这个问题呢?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2014-12-28 19:21:05

您还需要使部署的用户具有db角色,例如:

代码语言:javascript
复制
server 'you_ip_address', user: 'user_name', roles: %w{web app db}
票数 77
EN

Stack Overflow用户

发布于 2014-12-27 06:40:38

Jude Calimbas和hiveer的答案都比公认的答案更准确-迁移任务作为部署任务的一部分自动运行。

然而,他们的答案并不能解释观察到的问题。我唯一想到的是在deploy.rb文件中没有显式地链接database.yml文件。所以像这样的一行

代码语言:javascript
复制
set :linked_files, %w{config/database.yml}

会把它修好的。

我知道这是一个古老的问题,但从操作员那里了解有关问题和修复的更多细节将是一件有趣的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22593657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档