我有一个包含3个rails应用程序的项目,所有这些应用程序都运行在不同的ruby/rails
版本上。我正在尝试设置一个脚本来启动所有3个项目。我刚开始编写下面的shell脚本:
mysql.server start
echo first argument: $1
open -a /Applications/Utilities/Terminal.app redis-server
open -a /Applications/Utilities/Terminal.app /Users/acumendigital/org/shell_scripts/application1.sh --args $1
open -a /Applications/Utilities/Terminal.app /Users/acumendigital/org/shell_scripts/application2.sh --args $1
将接受一个参数(当前版本的分支)并运行以下命令:
cd /Users/acumendigital/org/application1
git fetch origin $1
git stash
git checkout $1
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then
# First try to load from a user install
source "$HOME/.rvm/scripts/rvm"
elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then
# Then try to load from a root install
source "/usr/local/rvm/scripts/rvm"
else
printf "ERROR: An RVM installation was not found.\n"
fi
rvm install ruby-1.9.3-p551
rvm use ruby-1.9.3-p551
gem install bundler
bundle install
rake db:migrate
bundle exec rails s -p 3001
问题是当我像这样运行这个进程时,它不是在shell中运行所以我每次都必须安装rvm和ruby版本。这消除了脚本设计创建的时间节省。我能够让tmuxinator
运行相同的脚本,但看起来tmuxinator
只允许我在ruby
中设置一个pre_window
版本。这意味着我每次都必须安装rvm等。我目前在tmuxinator
配置中的内容是:
name: work
root: ~/org/
windows:
- application1: cd shell_scripts && ./application1.sh
- application2: cd shell_scripts && ./application2.sh
将这些脚本作为shell会话运行但使用不同版本的ruby的最佳方法是什么?
请询问是否需要其他信息,我会提供 谢谢你的期待!