如何使用capistrano部署rails sqlite3数据库

问题描述 投票:2回答:2

我正在尝试像这样部署:

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')

但是在当前/ db文件夹中创建了production.sqlite3。

在localhost:3000它工作正常。

如何使用capistrano迁移db进行生产?

我使用nginx和独角兽,这是我的回购https://github.com/EgorkZe/bh

ruby-on-rails nginx sqlite capistrano production
2个回答
5
投票

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

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

3
投票

在生产中使用Sqlite是非常有问题的,因为每次部署新版本时,entiredb都会保留在旧版本文件夹中,您可以执行的操作是部署添加此命令时:

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

只需before rake db:migrate添加它,它将解决您的问题。

我强烈建议转向PostgreSQL / MySQL。

© www.soinside.com 2019 - 2024. All rights reserved.