Псевдонимы ниже для запуска солнечного пятна в фоновом режиме
Псевдонимы ниже для нахождения и убийства этих экземпляров работают
Переменные ENV для портов солнечных пятен доступны
Но,
Функции для запуска sunspot, команды обработки и уничтожения sunspot работают только после того, как я отправлю .bashrc за пределы функции.
$ user_id установлен до этого
sunspot_ports () вызывается и печатается правильно при первом входе в систему
rebash - это псевдоним для источника ~ .bashrc
У меня также есть псевдонимы для разработки и производства - это просто типичный код.
sunspot_ports ()
{
#alias sunspot_run_test to the user's port
sunspot_test_port=$(($user_id +5300))
echo "Your sunspot test port: $sunspot_test_port"
alias sunspot_run_test="RAILS_ENV=test sunspot-solr run -p${sunspot_test_port} &"
alias sunspot_kill_test="fuser -n tcp ${sunspot_test_port} -k"
export sunspot_production_port sunspot_development_port sunspot_test_port
}
solr_test()
{
#only makes the aliases be recognized when it is outside the function
#rebash
#aliases not recognized without a rebash prior to the function
sunspot_run_test
#commands not recognized even with rebash
#"RAILS_ENV=test sunspot-solr run -p${sunspot_test_port} &"
sleep 10;
"$@";
sunspot_kill_test;
#commands not recognized even with rebash
#"fuser -n tcp ${sunspot_test_port} -k"
}
Я попытался получить .bashrc внутри функции, заменив псевдоним расширенной командой и поместив функцию внутри sunspot_ports () в каждой комбинации. Порт солнечного пятна распечатывается правильно, когда я вхожу в систему, поэтому я знаю, что этот код запускается.
Кроме того, мне нужно иметь это как функцию в .bashrc, а не где-то в моем коде jruby, так как jvm не разрешает разветвление (иначе я бы просто использовал запуск sunspot-solr и конец sunspot-solr в моих тестах спецификаций ) * +1010 *