我喜欢使用rake来管理我在开发环境中的迁移,在那里我允许我的rails应用程序在dev DB上拥有完全权限。
但是,在登台和生产环境中,我的应用程序只具有写访问权限,而不能更改表。
我想在暂存和制作中继续使用rake db:migrate
,但问题是rake db
使用与我的rails应用相同的用户,后者没有足够的权限。
有没有人知道解决这个问题的简单方法,而不必在我的rails应用程序中允许管理数据库权限。
例如,如果我在运行-username
时指定-password
和rake db
,那就太棒了。
答案 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
。