2011-03-16 12 views
0

私はリモートサーバーなどから運用データベースを取得するためのレーキタスクを持っています。それは常に同じタスクですが、プロジェクトごとにサーバー情報が変更されます。私はここにコードを持っています:https://gist.github.com/868423最後のタスクでは、@ local_db_dir_path = nilエラーが発生しています。Ruby Rakeタスクにプロジェクト固有の設定情報を保存する最も良い方法は何ですか?

私はrakeを使うか、新しいシェルを開くたびにシェル環境変数を設定したくないので、私はシェル環境変数を使いたくないと思います。あなたがタスクに設定mulitsageか、単に別のホストを使用することができ

あなたはこのためにカピストラーノを使用する必要があります
+0

私は、$ config = {:server => 'remote_hostname'、:user => 'username'など...}のようなグローバルハッシュを使用することを提案しました。 – Ivan

答えて

0

スティックの設定、およびこのようにそれを読んでUSTは一つの大きな設定ハッシュ読み:私は、ここではないインスタンス変数をグローバルを使用してい

$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をサーバー自体のライブブランチにチェックインして、バージョン管理されているようにしたいと思っていますが、私はそれを心配することはありません。

0

、例カピストラーノは、次のようになります。

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 
jは

require 'yaml' 
config = YAML.load("config.yaml") # or wherever 

$remote_host = config['remote_host'] 
$ssh_username = config['ssh_username'] 
# and so on 

それとも次のことができます。YAMLファイル内

+0

これはプロジェクトごとの設定が格納されている場所。 – regularfry

+0

ありがとう、私はcapistranoを使うことができ、配備の仕事はできないと思います。 PHPプロジェクトでは、リリース/カレントディレクトリツリー全体を必要とせず、Apacheを再起動する必要はありません。キャップはちょうど本当に複雑なようです。私はキャップ付きのプロジェクトを作成しますが、私はPHPプログラマーに簡単に説明できるものを探しています。 – Ivan

+0

@Ivanoats capistranoは、あなたが望むものを実行するのに適しています。現在/リリースは必要ありませんが、非常に便利ですが、dbの移行ではこのスクリプトを使用できますhttp://stackoverflow.com/questions/5246821/capistrano-howto- deploy-mysql-database-for-a-phアプリケーション/ 5319691#5319691 – mpapis

関連する問題