summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/bundler-exec/bundler-exec.plugin.zsh37
1 files changed, 37 insertions, 0 deletions
diff --git a/plugins/bundler-exec/bundler-exec.plugin.zsh b/plugins/bundler-exec/bundler-exec.plugin.zsh
new file mode 100644
index 000000000..966725976
--- /dev/null
+++ b/plugins/bundler-exec/bundler-exec.plugin.zsh
@@ -0,0 +1,37 @@
+# This plugin is based on https://github.com/gma/bundler-exec
+# modify the BUNDLED_COMMANDS if needed
+
+BUNDLED_COMMANDS=(cucumber heroku rackup rails rake rspec ruby shotgun spec spork)
+
+## Functions
+
+bundler-installed()
+{
+ which bundle > /dev/null 2>&1
+}
+
+within-bundled-project()
+{
+ local dir="$(pwd)"
+ while [ "$(dirname $dir)" != "/" ]; do
+ [ -f "$dir/Gemfile" ] && return
+ dir="$(dirname $dir)"
+ done
+ false
+}
+
+run-with-bundler()
+{
+ local command="$1"
+ shift
+ if bundler-installed && within-bundled-project; then
+ bundle exec $command "$@"
+ else
+ $command "$@"
+ fi
+}
+
+## Main program
+for CMD in $BUNDLED_COMMANDS; do
+ alias $CMD="run-with-bundler $CMD"
+done