From 5cfe250e522ced205ef20989a892d65e82c7e2c4 Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Mon, 25 Nov 2013 16:11:08 -0500 Subject: [PATCH] Rewrite _rails-command to work from app subdirectories --- modules/rails/init.zsh | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/modules/rails/init.zsh b/modules/rails/init.zsh index 4ddbd1b..69f5b88 100644 --- a/modules/rails/init.zsh +++ b/modules/rails/init.zsh @@ -36,12 +36,27 @@ alias rorx='_rails-command destroy' # function _rails-command { - if [[ -e "script/server" ]]; then - ruby script/"$@" - elif [[ -e "bin/rails" ]]; then - ruby bin/rails "$@" + local root_dir="$PWD" + local rails_cmd + + while [[ "$root_dir" != '/' ]]; do + if [[ -d "$root_dir/.bundle" ]]; then + break + fi + root_dir="$root_dir:h" + done + + if [[ -e "$root_dir/bin/rails" ]]; then + rails_cmd='bin/rails' + elif [[ -e "$root_dir/script/rails" ]]; then + rails_cmd='script/rails' + elif [[ -e "$root_dir/script/server" ]]; then + rails_cmd='script/' else - ruby script/rails "$@" + print "$0: not inside of a Rails application: $PWD" >&2 + return 1 fi + + (cd "$root_dir" && ruby "$rails_cmd" "$@") }