rake db:在登台和生产环境中安全迁移

时间:2012-12-02 23:05:26

标签: sql ruby-on-rails deployment rake production-environment

我喜欢使用rake来管理我在开发环境中的迁移,在那里我允许我的rails应用程序在dev DB上拥有完全权限。

但是,在登台和生产环境中,我的应用程序只具有写访问权限,而不能更改表。

我想在暂存和制作中继续使用rake db:migrate,但问题是rake db使用与我的rails应用相同的用户,后者没有足够的权限。

有没有人知道解决这个问题的简单方法,而不必在我的rails应用程序中允许管理数据库权限。

例如,如果我在运行-username时指定-passwordrake db,那就太棒了。

1 个答案:

答案 0 :(得分:2)

您可以在migration中为具有适当权限的用户的用户/通行证指定一些config/database.yml连接并运行

RAILS_ENV=migration rake db:migrate

编辑看起来像这样的东西可能会起作用(虽然我从来没有通过远程连接测试它,只在本地测试)。将以下内容添加到config/database.yml

<%
require 'highline/import'

def request_input(msg, show_input = true)
  ask(msg) { |q| q.echo = show_input }
end
%>

migration:
  # Other connection information here (host, adapter, etc..)
  username: <%= request_input "Username:" %> 
  password: <%= request_input "Password:", false %> 

运行时

RAILS_ENV=migration rake db:migrate

系统将提示您输入连接的用户名和密码。确保添加

gem 'highline'

Gemfile

来源:http://dzone.com/snippets/request-database