#!/usr/bin/env ruby require File.expand_path('../../spec/support/detect_rails_version', __FILE__) unless ARGV[0] puts <<-EOF Usage: ./script/#{__FILE__} COMMAND [ARGS] The command will be run in the context of the local rails app stored in test-rails-app. Examples: ./script/local server ./script/local c ./script/local rake db:migrate EOF exit(1) end # Set up some variables rails_version = detect_rails_version! test_app_dir = ".test-rails-apps" test_app_path = "#{test_app_dir}/test-rails-app-#{rails_version}" # Ensure .test-rails-apps is created system "mkdir #{test_app_dir}" unless File.exists?(test_app_dir) # Create the sample rails app if it doesn't already exist unless File.exists? test_app_path system "RAILS='#{rails_version}' bundle exec rails new #{test_app_path} -m spec/support/rails_template_with_data.rb --skip-bundle" end # Link this rails app system "rm test-rails-app" system "ln -s #{test_app_path} test-rails-app" # If it's a rails command, auto add the rails script RAILS_COMMANDS = %w{generate console server dbconsole g c s runner} args = RAILS_COMMANDS.include?(ARGV[0]) ? ["rails", ARGV].flatten : ARGV # Run the command exec "cd test-rails-app && GEMFILE=../Gemfile bundle exec #{args.join(" ")}"