bundler-exec.sh 968 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #!/bin/bash
  2. # Automatically run Ruby scripts with "bundle exec" (but only when appropriate).
  3. # http://effectif.com/ruby/automating-bundle-exec
  4. # Github: https://github.com/gma/bundler-exec
  5. ## Functions
  6. bundler-installed()
  7. {
  8. which bundle > /dev/null 2>&1
  9. }
  10. within-bundled-project()
  11. {
  12. local dir="$(pwd)"
  13. while [ "$(dirname $dir)" != "/" ]; do
  14. [ -f "$dir/Gemfile" ] && return
  15. dir="$(dirname $dir)"
  16. done
  17. false
  18. }
  19. run-with-bundler()
  20. {
  21. if bundler-installed && within-bundled-project; then
  22. bundle exec "$@"
  23. else
  24. "$@"
  25. fi
  26. }
  27. ## Main program
  28. BUNDLED_COMMANDS="${BUNDLED_COMMANDS:-
  29. cap
  30. capify
  31. cucumber
  32. foreman
  33. guard
  34. haml
  35. heroku
  36. html2haml
  37. rackup
  38. rails
  39. rake
  40. rake2thor
  41. rspec
  42. ruby
  43. sass
  44. sass-convert
  45. serve
  46. shotgun
  47. spec
  48. spork
  49. thin
  50. thor
  51. tilt
  52. tt
  53. turn
  54. unicorn
  55. unicorn_rails
  56. }"
  57. for CMD in $BUNDLED_COMMANDS; do
  58. if [[ $CMD != "bundle" && $CMD != "gem" ]]; then
  59. alias $CMD="run-with-bundler $CMD"
  60. fi
  61. done