DigitalOcean-在预编译资产上限制登台部署错误

时间:2018-10-16 16:49:12

标签: deployment ruby-on-rails-5 capistrano rake-task

当我运行cap staging deploy:check时,它会成功。当我运行cap staging deploy时,它会成功直到deploy:assets:precompile出现此错误为止:

 01 ~/.rvm/bin/rvm default do bundle exec rake assets:precompile
 01 rake aborted!
 01 ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  relation "links" does not exist
 01 LINE 1: SELECT "links".* FROM "links"

在谷歌搜索之后,我相信问题在于它正在尝试在创建表之前创建关系。此后,我尝试了许多解决方案,包括将config.assets.initialize_on_precompile = false放在application.rb中,但没有一个起作用。

我迫切需要帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

问题在于asset:precompile任务会引导整个Rails环境。您是否有任何初始化程序或使用 Link 模型的东西?

肮脏的解决方法:

ssh到登台服务器,请转至您在capistrano的配置中设置的:deploy_path ,然后在上一发布文件夹中。之后,手动运行 RAILS_ENV = staging bundle exec rake db:migrate