【问题标题】:How to deploy rails sqlite3 database with capistrano如何使用 capistrano 部署 rails sqlite3 数据库
【发布时间】:2014-04-14 18:25:35
【问题描述】:

我正在尝试这样部署:

bundle exec cap deploy:cold
RAILS_ENV=production rake db:migrate
bundle exec cap deploy:migrate

但一直在日志文件中显示错误:

I, [2014-04-14T14:15:14.853543 #10769]  INFO -- : Started GET "/users/sign_up" for     
176.192.228.14 at 2014-04-14 14:15:14 -0400
I, [2014-04-14T14:15:14.856055 #10769]  INFO -- : Processing by  
Devise::RegistrationsController#new as HTML
I, [2014-04-14T14:15:14.857398 #10769]  INFO -- : Completed 500 Internal Server Error 
in 1ms
F, [2014-04-14T14:15:14.860844 #10769] FATAL -- : 
ActiveRecord::StatementInvalid (Could not find table 'users')

但在 current/db 文件夹中创建了 production.sqlite3 。

在 localhost:3000 中它工作正常。

如何使用 capistrano 迁移数据库以进行生产?

我使用 nginx 和 unicorn,这是我的 repo https://github.com/EgorkZe/bh

【问题讨论】:

    标签: ruby-on-rails nginx sqlite capistrano production


    【解决方案1】:

    更好的是,更改您的数据库配置:

    production:
      adapter: sqlite3
      database: /absolute/path/to/shared/db/production.sqlite3 # instead of db/production.sqlite3
    

    【讨论】:

      【解决方案2】:

      在生产环境中使用 Sqlite 非常有问题,因为每次部署新版本时,整个数据库都停留在旧版本文件夹中,您可以在部署时添加以下命令:

      task :copy_sqlite, roles: :app do
          run "cp #{current_path}/db/production.sqlite3 #{release_path}/db/"
      end
      

      只需添加 before rake db:migrate 即可解决您的问题。

      我强烈建议迁移到 PostgreSQL/MySQL。

      【讨论】:

      • 您可能应该使用符号链接而不是复制。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-22
      • 1970-01-01
      相关资源
      最近更新 更多