我正在尝试像这样部署:
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
答案 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。