Я занимаюсь разработкой приложения Rails v2.3.и использование MySQL v5.1 на Ubuntu машине.
У меня есть задача rake , чтобы stop и start mysqlбаза данных выглядит следующим образом:
namespace :db do
task :some_db_task => :environment do
...
exec 'sudo /etc/init.d/mysql stop'
...
exec 'sudo /etc/init.d/mysql start'
end
end
Как вы видите выше в коде, я использовал sudo
, чтобы убедиться, что команда выполнена.Однако из-за этого sudo
, когда я запускаю задачу rake , будет выдан запрос на ввод пароля root , хотя задача rake будет успешно выполнена.
Я хочу избежать ввода пароля, поэтому я подумал, что мог бы выполнить команду оболочки, чтобы сначала перейти к пользователю root, а затем остановить / запустить MySQL, поэтому я изменил свой код следующим образом:
namespace :db do
task :some_db_task => :environment do
...
exec 'sudo su'
exec '/etc/init.d/mysql stop'
...
exec '/etc/init.d/mysql start'
end
end
Смотри, я добавил sudo su
команду для запуска в первую очередь.Теперь я снова запускаю задачу rake, , но, что удивительно, задача rake запускается до exec 'sudo su'
, затем она останавливается , остальной код даже не запускается.Зачем?Как от него избавиться?
(Как правило, я не хочу вводить пароль root во время выполнения задачи rake для запуска и остановки MySQL)