リモートサーバーなどから本番データベースを取得するためのレーキタスクがあります。これは常に同じタスクですが、サーバー情報はプロジェクトごとに異なります。ここにコードがあります:https : //gist.github.com/868423最後のタスクで、@ local_db_dir_path=nilエラーが発生します。
rakeを使用したり、新しいシェルを開いたりするたびに設定したくないので、シェル環境変数を使用したくないと思います。
これにはcapistranoを使用する必要があります。mulitsageを使用するか、タスクにホスト設定を個別に使用することができます。たとえば、capistranoは次のようになります。
task :development do
server "development.host"
end
task :backup do
run "cd #{current_path}; rake db:dump"
download "remote_path", "local_path"
end
そしてそれをこのように呼びます:
cap development backup
設定をYAMLファイルに貼り付けて、次のように読みます。
require 'yaml'
config = YAML.load("config.yaml") # or wherever
$remote_host = config['remote_host']
$ssh_username = config['ssh_username']
# and so on
または、1つの大きな構成ハッシュを読み取ることができます。
$config = YAML.load("config.yaml")
ここではインスタンス変数ではなくグローバルを使用しているため、変数スコープに驚かされる可能性はありません。
config.yamlは次のようになります。
---
remote_host: some.host.name
ssh_username: myusername
other_setting: foo
whatever: bar
私はconfig.yaml.sampleをコードの本体でチェックインしたままにする傾向があります。このコードには、バージョン管理されていないconfig.yamlにコピーできるすべての設定がありますが、機能していません。config.yamlをサーバー自体のライブブランチにチェックインしてバージョン管理することを好む人もいますが、私はそれを気にしませんでした。