From e60fe9212b50e35861c7a8fbbf82b7c811c27f7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B1=E5=8D=9A=E4=BA=9E?= Date: Sat, 23 Dec 2023 13:31:27 +0800 Subject: [PATCH] Fix bug. --- lib/tasks/exec_command.rake | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/tasks/exec_command.rake b/lib/tasks/exec_command.rake index 8e615ee..d2e7cfb 100644 --- a/lib/tasks/exec_command.rake +++ b/lib/tasks/exec_command.rake @@ -35,7 +35,7 @@ namespace :exec_commands do @command_trans = {} @command_relations = {"upgrade_site"=>'git fetch origin && rails runner "a=Admin::SitesController.new;a.git_reset(%w(origin)[0],%w(update)[0]);while(1) do (Multithread.where(key: %w(update_manager)[0],status: %w(finish)[0]).count!=0 ? break : nil) end;sleep(5)"', "bundle_update"=>"bundle update && kill -s USR2 `cat tmp/pids/unicorn.pid`", - "restart_site"=>"kill -s TERM `fuser tmp/pids/unicorn.sock tmp/sockets/unicorn.sock tmp/unicorn.sock`;bundle exec unicorn_rails -c config/unicorn.rb -D -E {{rails_env}}", + "restart_site"=>"kill -s TERM `fuser tmp/pids/unicorn.sock tmp/sockets/unicorn.sock tmp/unicorn.sock`; {{rvm}} use `cat .ruby-version` && bundle exec unicorn_rails -c config/unicorn.rb -D -E {{rails_env}}", "get_template"=>"mongo --eval 'db.sites.find().pretty()[0][\"template\"]' {{db_name}} --quiet"} @preserve_output = ["get_template"] @command_relations.each do |k,v| @@ -43,7 +43,7 @@ namespace :exec_commands do end rails_envs = ["production", "development"] rails_envs.each do |env| - @command_relations["start_site_in_env,#{env}"] = "kill -s TERM `fuser tmp/pids/unicorn.sock tmp/sockets/unicorn.sock tmp/unicorn.sock`;bundle exec unicorn_rails -c config/unicorn.rb -D -E #{env}" + @command_relations["start_site_in_env,#{env}"] = "kill -s TERM `fuser tmp/pids/unicorn.sock tmp/sockets/unicorn.sock tmp/unicorn.sock`; {{rvm}} use `cat .ruby-version` && bundle exec unicorn_rails -c config/unicorn.rb -D -E #{env}" @command_relations["start_site_in_env\\,#{env}"] = @command_relations["start_site_in_env,#{env}"] @command_trans["start_site_in_env,#{env}"] = I18n.t("client_management.start_site_in_env",{:env=>env}) @command_trans["start_site_in_env\\,#{env}"] = @command_trans["start_site_in_env,#{env}"] @@ -71,6 +71,10 @@ namespace :exec_commands do system("ssh-add \"$HOME/.ssh/id_rsa\"") end Net::SSH.start(ip , user , { password: password, port: server_port}) do |ssh| + rvm_path = ssh.exec!("which rvm").to_s.strip + if rvm_path.blank? + rvm_path = "/home/#{args.user}/.rvm/bin/rvm" + end @site_construct.update!(:infos=>[]) rescue nil if args.type == 'close_site' exec_ssh_command_by_sudo_and_see_output(ssh,"chmod 777 #{@site_construct.path}/#{@site_construct.site_name} -R",false) @@ -97,7 +101,7 @@ namespace :exec_commands do @site_construct.update(:rails_env=>rails_env) update_infos_for_exec("Starting site to #{rails_env}") outputs = exec_ssh_command_by_sudo_and_see_output(ssh,"sudo -p 'sudo password:' chmod 777 #{@site_construct.path}/#{@site_construct.site_name} -R",false) - output = exec_ssh_command_by_sudo_and_see_output(ssh,"bash -l -c 'cd #{@site_construct.path}/#{@site_construct.site_name}\nkill -s TERM `fuser tmp/unicorn.sock`\nsudo -p \"sudo password:\" kill -s TERM `sudo -p \"sudo password:\" fuser tmp/unicorn.sock`\nsudo -p \"sudo password:\" rm -f tmp/pids/unicorn.pid\nbundle exec unicorn_rails -c config/unicorn.rb -D -E #{rails_env}\n'",false) + output = exec_ssh_command_by_sudo_and_see_output(ssh,"bash -l -c 'cd #{@site_construct.path}/#{@site_construct.site_name}\nkill -s TERM `fuser tmp/unicorn.sock`\nsudo -p \"sudo password:\" kill -s TERM `sudo -p \"sudo password:\" fuser tmp/unicorn.sock`\nsudo -p \"sudo password:\" rm -f tmp/pids/unicorn.pid\n '#{rvm_path}' use `cat .ruby-version`\nbundle exec unicorn_rails -c config/unicorn.rb -D -E #{rails_env}\n'",false) if output.include? "bundle install" update_infos_for_exec("Not yet bundle install") outputs = exec_ssh_command_by_sudo_and_see_output(ssh,"bash -l -c 'cd #{@site_construct.path}/#{@site_construct.site_name};bundle install'") @@ -107,7 +111,7 @@ namespace :exec_commands do @site_construct.update(:status =>"error") break else - exec_ssh_command_by_sudo_and_see_output(ssh,"bundle exec unicorn_rails -c config/unicorn.rb -D -E #{rails_env}",false) + exec_ssh_command_by_sudo_and_see_output(ssh,"'#{rvm_path}' use `cat .ruby-version` && bundle exec unicorn_rails -c config/unicorn.rb -D -E #{rails_env}",false) end end update_infos_for_exec("Finish starting #{@site_construct.site_name}") @@ -148,7 +152,7 @@ namespace :exec_commands do update_flag = 2 #Not logging commands result end end - command = command.gsub("{{#{k}}}",v) + command = command.gsub("{{#{k}}}",v).gsub('{{rvm}}', "'#{rvm_path}'") @command_i18n = @command_i18n.gsub("{{#{k}}}",@command_trans[k]) end if @commands_i18n