bundler-exec.sh 976 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. jasmine
  38. rackup
  39. rails
  40. rake
  41. rake2thor
  42. rspec
  43. ruby
  44. sass
  45. sass-convert
  46. serve
  47. shotgun
  48. spec
  49. spork
  50. thin
  51. thor
  52. tilt
  53. tt
  54. turn
  55. unicorn
  56. unicorn_rails
  57. }"
  58. for CMD in $BUNDLED_COMMANDS; do
  59. if [[ $CMD != "bundle" && $CMD != "gem" ]]; then
  60. alias $CMD="run-with-bundler $CMD"
  61. fi
  62. done