0

リモートサーバーなどから本番データベースを取得するためのレーキタスクがあります。これは常に同じタスクですが、サーバー情報はプロジェクトごとに異なります。ここにコードがあります:https : //gist.github.com/868423最後のタスクで、@ local_db_dir_path=nilエラーが発生します。

rakeを使用したり、新しいシェルを開いたりするたびに設定したくないので、シェル環境変数を使用したくないと思います。

4

2 に答える 2

0

これには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
于 2011-03-17T11:34:27.343 に答える
0

設定を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をサーバー自体のライブブランチにチェックインしてバージョン管理することを好む人もいますが、私はそれを気にしませんでした。

于 2011-03-17T15:38:55.113 に答える