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

时间:2014-04-14 18:25:36

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

我正在尝试像这样部署:

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 for production?

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

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分: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。