let the rails command recurse upwards looking for script/rails, and exec ruby on it for better portability [Xavier Noria] (Closes #4008)
This commit is contained in:
parent
a524d42acc
commit
bf0f14579a
@ -1,11 +1,30 @@
|
||||
if File.exists?(Dir.getwd + '/script/rails')
|
||||
exec(Dir.getwd + '/script/rails', *ARGV)
|
||||
else
|
||||
railties_path = File.expand_path('../../lib', __FILE__)
|
||||
$:.unshift(railties_path) if File.directory?(railties_path) && !$:.include?(railties_path)
|
||||
require 'rbconfig'
|
||||
|
||||
require 'rails/ruby_version_check'
|
||||
Signal.trap("INT") { puts; exit }
|
||||
module Rails
|
||||
module ScriptRailsLoader
|
||||
RUBY = File.join(*RbConfig::CONFIG.values_at("bindir", "ruby_install_name")) + RbConfig::CONFIG["EXEEXT"]
|
||||
SCRIPT_RAILS = File.join('script', 'rails')
|
||||
|
||||
require 'rails/commands/application'
|
||||
end
|
||||
def self.exec_script_rails!
|
||||
cwd = Dir.pwd
|
||||
exec RUBY, SCRIPT_RAILS, *ARGV if File.exists?(SCRIPT_RAILS)
|
||||
Dir.chdir("..") do
|
||||
# Recurse in a chdir block: if the search fails we want to be sure
|
||||
# the application is generated in the original working directory.
|
||||
exec_script_rails! unless cwd == Dir.pwd
|
||||
end
|
||||
rescue SystemCallError
|
||||
# could not chdir, no problem just return
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Rails::ScriptRailsLoader.exec_script_rails!
|
||||
|
||||
railties_path = File.expand_path('../../lib', __FILE__)
|
||||
$:.unshift(railties_path) if File.directory?(railties_path) && !$:.include?(railties_path)
|
||||
|
||||
require 'rails/ruby_version_check'
|
||||
Signal.trap("INT") { puts; exit }
|
||||
|
||||
require 'rails/commands/application'
|
||||
|
Loading…
Reference in New Issue
Block a user