1
0

bundler-exec.sh 1.1 KB

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