ライズプロジェクト管理執行命令問題

1402 ワード

最近はLIlsプロジェクトを管理するプロジェクトをしています。効果を実現するために、他のプロジェクトの更新コードの切り替え分岐を制御して、serverを再開します。
基本的な考え方は、linuxを実行するbash命令である。

#
%x{/bin/bash -l -c 'cd #{path} && git pull '}
は、指定されたactionにパッケージ化された命令を作成し、コードの任意の分岐/更新などを行うことができ、各ステップの結果は、1つのファイルに入れられ、順次読みます。

%x{/bin/bash -l -c 'cd #{path} && git fetch && git branch -a > #{branch_text_file_path}'}
branch_text = IO.read result_text_file_path
は、すべてのlogsを出力する必要があれば、git pull > result.txt 2>&1という方法で行うことができます。
ギット命令が完了したら移転とserverを再起動します。ここで大きな障害がありました。この管理項目を構築する環境はruby-2.1.4+rals 4.2です。rake db:migrateを実行する時、ずっとエラーを報告しています。
./gems/bundler-1.12.5/lib/bundler/spec_set.rb:95:in`block in materialize':Could not find rake-1.2.2 in any of the sources(Bundeler:GemNot Found)
長い間調整して、which--rakeを出力した結果、対応項目のgem位置のrakeであり、手動でディレクトリに入れてもrakeを実行しても間違いなく、いくつかの項目が変更されても同じです。最終的に結論が出ました。このプロジェクトは他のプロジェクトディレクトリに入るたびにコマンドを実行する時、本プロジェクトのgemfile.lockに別のプロジェクトのgemパッケージをチェックします。ですから、どのように実行しても、二つのプロジェクトのgemfileが同じでない限り、エラーが発生します。
続いて長いデバッグの道です。sidekiq、rakeの任務を試してみました。shell脚本を書いて、ruby脚本を書いて、java脚本を書いてください。全部間違えました。wheneverはいいですが、whenenverはタイミングタスクです。最短間隔は1分岐で、しかも使いにくいです。即時性がないので、これらの案は全部諦めました。
最後に、レイズ2のプロジェクトを思い付きました。ゲームをしなくてもいいようです。試してみました。やはり成功しました。-ライズ2に調整してから、レーキ、unicornなど他の命令は全部OKです。