2

私は rake を使用して、開発環境での移行を管理することを楽しんでいます。この環境では、開発 DB で自分の Rails アプリに完全なアクセス許可を許可しています。

ただし、ステージング環境と本番環境では、私のアプリケーションには書き込みアクセスしかなく、テーブルを変更する機能はありません。

rake db:migrateステージングとプロダクションで引き続き使用したいのrake dbですが、Rails アプリと同じユーザーを使用しているため、十分な権限がありません。

Railsアプリで管理者のdb権限を許可することなく、この問題を回避する簡単な方法を知っている人はいますか?

-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 に答える