【问题标题】:Capistrano deployment to databaseCapistrano 部署到数据库
【发布时间】:2014-04-04 11:15:20
【问题描述】:

我已经成功地设置了一个自动部署的服务器,幸运的是,终于。

现在部署时发生了一个小问题......

当部署发生时,数据库被迁移,事情是即使在服务器重新启动后,数据库仍然保持“缓存”状态,并且在我转到服务器之前不会识别迁移所做的任何更改并重启mysql服务。

关于如何解决这个问题的任何想法?

提前致谢。

编辑 1:

这是一个迁移示例;

class AddRoleToUsers < ActiveRecord::Migration
  def change
    add_column :users, :role, :string, default: 'member'
  end
end

【问题讨论】:

    标签: mysql ruby-on-rails-3 deployment migration capistrano


    【解决方案1】:

    但是您怎么知道更改未被识别?您可以发布一些示例吗?
    在生产环境中,Rails 能够缓存一些数据库回复,但重新启动 rails 服务器应该会清除所有这些缓存。所以看来问题出在mysql部分的某个地方(我个人只使用Postgres,所以对mysql不太了解)。也许解决方案是在 Capistrano 任务中添加一些 mysql 重启命令?
    在 Capistrano 3.1 中,它类似于(假设您正在运行 linux 服务器):

    task :restart do
        on roles(:app), in: :sequence, wait: 5 do
           execute :touch, release_path.join('tmp/restart.txt')
           execute "sudo /etc/init.d/mysql restart"
        end
      end
    

    【讨论】:

    • 唯一不好的是它必须运行 sudo 命令,并且必须将此用户配置为在运行 sudo 时不提示输入密码,这 imo 有点不安全,但是谢谢,此外,示例迁移将在主帖上(稍作编辑)
    猜你喜欢
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多