# File lib/phusion_passenger/loader_shared_helpers.rb, line 159
        def run_load_path_setup_code(options)
                # rack-preloader.rb depends on the 'rack' library, but the app
                # might want us to use a bundled version instead of a
                # gem/apt-get/yum/whatever-installed version. Therefore we must setup
                # the correct load paths before requiring 'rack'.
                #
                # The most popular tool for bundling dependencies is Bundler. Bundler
                # works as follows:
                # - If the bundle is locked then a file .bundle/environment.rb exists
                #   which will setup the load paths.
                # - If the bundle is not locked then the load paths must be set up by
                #   calling Bundler.setup.
                # - Rails 3's boot.rb automatically loads .bundle/environment.rb or
                #   calls Bundler.setup if that's not available.
                # - Other Rack apps might not have a boot.rb but we still want to setup
                #   Bundler.
                # - Some Rails 2 apps might have explicitly added Bundler support.
                #   These apps call Bundler.setup in their preinitializer.rb.
                #
                # So the strategy is as follows:
                
                # Our strategy might be completely unsuitable for the app or the
                # developer is using something other than Bundler, so we let the user
                # manually specify a load path setup file.
                if options["load_path_setup_file"]
                        require File.expand_path(options["load_path_setup_file"])
                
                # The app developer may also override our strategy with this magic file.
                elsif File.exist?('config/setup_load_paths.rb')
                        require File.expand_path('config/setup_load_paths')
                
                # If the Bundler lock environment file exists then load that. If it
                # exists then there's a 99.9% chance that loading it is the correct
                # thing to do.
                elsif File.exist?('.bundle/environment.rb')
                        require File.expand_path('.bundle/environment')
                
                # If the Bundler environment file doesn't exist then there are two
                # possibilities:
                # 1. Bundler is not used, in which case we don't have to do anything.
                # 2. Bundler *is* used, but the gems are not locked and we're supposed
                #    to call Bundler.setup.
                #
                # The existence of Gemfile indicates whether (2) is true:
                elsif File.exist?('Gemfile')
                        # In case of Rails 3, config/boot.rb already calls Bundler.setup.
                        # However older versions of Rails may not so loading boot.rb might
                        # not be the correct thing to do. To be on the safe side we
                        # call Bundler.setup ourselves; calling Bundler.setup twice is
                        # harmless. If this isn't the correct thing to do after all then
                        # there's always the load_path_setup_file option and
                        # setup_load_paths.rb.
                        require 'rubygems'
                        require 'bundler/setup'
                end
                
                # Bundler might remove Phusion Passenger from the load path in its zealous
                # attempt to un-require RubyGems, so here we put Phusion Passenger back
                # into the load path. This must be done before loading the app's startup
                # file because the app might require() Phusion Passenger files.
                if !$LOAD_PATH.include?(PhusionPassenger.ruby_libdir)
                        $LOAD_PATH.unshift(PhusionPassenger.ruby_libdir)
                        $LOAD_PATH.uniq!
                end
                
                
                # !!! NOTE !!!
                # If the app is using Bundler then any dependencies required past this
                # point must be specified in the Gemfile. Like ruby-debug if debugging is on...
        end