1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #!/usr/bin/env ruby
- #
- # Switches the development environment to use the given
- # version of rails. Caches the Gemfile.locks so that
- # switching it very fast.
- #
- require File.expand_path("../../spec/support/detect_rails_version", __FILE__)
- def cmd(command)
- puts command
- exit 1 unless system command
- end
- version = ARGV[0]
- unless version
- puts "USAGE: ./script/#{__FILE__} VERSION [OPTIONS]"
- puts
- puts "Options:"
- puts " --clobber Add this flag to remove the existing Gemfile.lock before running"
- exit(1)
- end
- def file_or_symlink?(path)
- File.exist?(path) || File.symlink?(path)
- end
- gem_lock_dir = ".gemfile-locks"
- gem_lock_file = "#{gem_lock_dir}/Gemfile-#{version}.lock"
- # Ensure our lock dir is created
- cmd "mkdir #{gem_lock_dir}" unless File.exists?(gem_lock_dir)
- # --clobber passed in
- if File.exists?(gem_lock_file) && ARGV.include?('--clobber')
- cmd "rm #{gem_lock_file}"
- end
- write_rails_version(version)
- # Ensure that bundler installs
- ENV['RUBYOPT'] = ''
- if File.exists?(gem_lock_file)
- cmd("rm Gemfile.lock") if file_or_symlink?("Gemfile.lock")
- cmd("ln -s #{gem_lock_file} Gemfile.lock")
- cmd("bundle")
- else
- cmd "rm Gemfile.lock" if file_or_symlink?("Gemfile.lock")
- cmd "bundle install"
- cmd "mv Gemfile.lock #{gem_lock_file}"
- cmd("ln -s #{gem_lock_file} Gemfile.lock")
- end
|