我在 Heroku 上为我的 rails 应用程序使用管道。我有一个登台应用程序,然后将其提升为生产应用程序。我在部署到登台之前运行任何模式迁移,然后在我提升它时将 slug 移动到生产中。
但是现在我需要在下一次部署时迁移一些用户数据,我正在寻找一种方法来作为促销的一部分。升级完成后,我总是可以运行 rake 任务,但这似乎非常冒险。理想情况下,代码应该在应用程序发布之前运行,并在出现任何问题时回滚。
我认为发布阶段是答案,但考虑到这些考虑,我认为我不能在那里访问用户数据。
我在 Heroku 上为我的 rails 应用程序使用管道。我有一个登台应用程序,然后将其提升为生产应用程序。我在部署到登台之前运行任何模式迁移,然后在我提升它时将 slug 移动到生产中。
但是现在我需要在下一次部署时迁移一些用户数据,我正在寻找一种方法来作为促销的一部分。升级完成后,我总是可以运行 rake 任务,但这似乎非常冒险。理想情况下,代码应该在应用程序发布之前运行,并在出现任何问题时回滚。
我认为发布阶段是答案,但考虑到这些考虑,我认为我不能在那里访问用户数据。
看来我对发布阶段的保留是没有根据的。作为发布阶段的一部分,您可以很好地迁移数据。对于其他尝试相同操作的人,我使用了data_migrate ruby gem,效果很好。然后我更新了我的 Procfile 以包括以下内容:
release: rails db:migrate:with_data
这将运行我使用 gem 创建的任何数据迁移,如果那里出现任何问题,则发布中止。