我有一个项目,它有 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 ect。我目前在我的tmuxinator
配置中拥有的是:
name: work
root: ~/org/
windows:
- application1: cd shell_scripts && ./application1.sh
- application2: cd shell_scripts && ./application2.sh
将这些脚本作为 shell 会话运行但使用不同版本的 ruby 的最佳方法是什么?
请询问是否需要其他信息,我会提供。
感谢您的关注!