【发布时间】:2016-07-30 00:44:50
【问题描述】:
我有一个正在运行的实时 Rails 应用程序,目前正在 Heroku 上运行。为了缩减成本,我正在将整个应用程序迁移到 Digital Ocean。到目前为止,我所做的大部分工作只涉及添加额外的 gem 和文件以支持 Capistrano 部署,但我只是遇到了第一个(可能是很多)实例,我需要在 Digital Ocean 上为我的应用程序进行不同的配置,而不是什么我用于 Heroku。具体来说就是 Redis。在 Heroku 上,您需要使用附加组件(“Redis To Go”),因为您无法直接安装 Redis。因此我的 reds_init.rb 看起来像这样:
if Rails.env.development? || Rails.env.test?
redis_conf_path = Rails.root.join("config/redis", "#{Rails.env}.conf")
redis_conf = File.read(redis_conf_path)
port = /port.(\d+)/.match(redis_conf)[1]
`redis-server #{redis_conf_path}`
REDIS = Redis.new(:port => port)
end
if Rails.env.production?
uri = URI.parse(ENV["REDISTOGO_URL"])
REDIS = Redis.new(:url => ENV['REDISTOGO_URL'])
end
production 配置是 Heroku 特有的,对于 Digital Ocean,我需要更类似于(可能完全类似于)测试/开发配置的东西。但是,在迁移过程中,我需要同时工作,因为我可能需要将代码(错误修复等)部署到实时生产环境,同时慢慢设置 Digital Ocean 环境。
由于在我完成此迁移时可能会有许多其他此类事情的实例,我认为处理此问题的最佳方法是为 Digital Ocean 环境创建一个单独的 Git 分支。但我不完全确定设置它的最佳方法。我非常感谢必须在实时站点上进行此类迁移的人的任何指点。
【问题讨论】:
标签: ruby-on-rails git vps