bundler-exec.sh 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. if [ $command == "ruby" ]; then
  23. ruby -rbundler/setup "$@"
  24. else
  25. bundle exec $command "$@"
  26. fi
  27. else
  28. "$@"
  29. fi
  30. }
  31. ## Main program
  32. BUNDLED_COMMANDS="${BUNDLED_COMMANDS:-
  33. cap
  34. capify
  35. cucumber
  36. foreman
  37. guard
  38. haml
  39. heroku
  40. html2haml
  41. jasmine
  42. rackup
  43. rails
  44. rake
  45. rake2thor
  46. rspec
  47. ruby
  48. sass
  49. sass-convert
  50. serve
  51. shotgun
  52. spec
  53. spork
  54. thin
  55. thor
  56. tilt
  57. tt
  58. turn
  59. unicorn
  60. unicorn_rails
  61. }"
  62. for CMD in $BUNDLED_COMMANDS; do
  63. if [[ $CMD != "bundle" && $CMD != "gem" ]]; then
  64. alias $CMD="run-with-bundler $CMD"
  65. fi
  66. done