2

我喜欢在开发环境中使用 rake 来管理我的迁移,在那里我允许我的 rails 应用程序对开发数据库具有完全权限。

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

我想继续rake db:migrate在登台和生产中使用,但问题是rake db使用与我的 rails 应用程序相同的用户,它没有足够的权限。

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

例如,如果我可以指定-username以及-password何时运行rake db,那就太好了。

4

1 回答 1

3

您可以在您的用户/密码中为具有适当权限的用户指定一些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

于 2012-12-02T23:21:39.360 回答