From 2110a524a4913815d036786aa01319fd67db0ee2 Mon Sep 17 00:00:00 2001 From: Carl Lerche Date: Fri, 16 Oct 2009 12:49:39 -0700 Subject: [PATCH] Deprecate RAILS_ROOT in favor of Rails.root (which proxies to the application's object root) --- .../lib/action_controller/metal/helpers.rb | 2 +- .../lib/active_support/testing/isolation.rb | 2 + railties/bin/rails | 1 + railties/builtin/rails_info/rails/info.rb | 4 +- .../guides/source/2_2_release_notes.textile | 2 +- .../source/action_controller_overview.textile | 2 +- railties/guides/source/command_line.textile | 8 ++-- railties/lib/rails/backtrace_cleaner.rb | 4 +- railties/lib/rails/commands/about.rb | 1 - railties/lib/rails/commands/console.rb | 2 +- railties/lib/rails/commands/dbconsole.rb | 2 +- railties/lib/rails/commands/destroy.rb | 1 - railties/lib/rails/commands/server.rb | 4 +- railties/lib/rails/configuration.rb | 34 +++++--------- railties/lib/rails/core.rb | 4 +- railties/lib/rails/deprecation.rb | 17 +++++++ railties/lib/rails/gem_dependency.rb | 2 +- railties/lib/rails/generators.rb | 10 ++--- railties/lib/rails/generators/base.rb | 4 +- .../rails/app/templates/config/application.rb | 2 +- .../rails/app/templates/config/boot.rb | 3 -- railties/lib/rails/initializer.rb | 1 + railties/lib/rails/plugin/loader.rb | 2 +- railties/lib/rails/tasks.rb | 4 +- railties/lib/rails/tasks/databases.rake | 24 +++++----- railties/lib/rails/tasks/framework.rake | 8 ++-- railties/lib/rails/tasks/gems.rake | 2 +- railties/lib/rails/tasks/misc.rake | 2 +- railties/lib/rails/test_help.rb | 2 +- railties/test/abstract_unit.rb | 10 ++--- .../test/application/configuration_test.rb | 8 ++-- railties/test/application/generators_test.rb | 2 + railties/test/application/initializer_test.rb | 45 +++++++++++++------ railties/test/application/plugins_test.rb | 12 +++-- railties/test/backtrace_cleaner_test.rb | 2 - railties/test/boot_test.rb | 1 - .../test/generators/generators_test_helper.rb | 20 ++------- .../test/initializer/initialize_i18n_test.rb | 2 + railties/test/initializer/path_test.rb | 1 + railties/test/initializer_test.rb | 20 --------- 40 files changed, 138 insertions(+), 141 deletions(-) create mode 100644 railties/lib/rails/deprecation.rb delete mode 100644 railties/test/initializer_test.rb diff --git a/actionpack/lib/action_controller/metal/helpers.rb b/actionpack/lib/action_controller/metal/helpers.rb index 7c52779064..117ea3481f 100644 --- a/actionpack/lib/action_controller/metal/helpers.rb +++ b/actionpack/lib/action_controller/metal/helpers.rb @@ -54,7 +54,7 @@ module ActionController included do # Set the default directory for helpers extlib_inheritable_accessor(:helpers_dir) do - defined?(RAILS_ROOT) ? "#{RAILS_ROOT}/app/helpers" : "app/helpers" + defined?(Rails) ? "#{Rails.root}/app/helpers" : "app/helpers" end end diff --git a/activesupport/lib/active_support/testing/isolation.rb b/activesupport/lib/active_support/testing/isolation.rb index c75b59c284..8f7d1c29a9 100644 --- a/activesupport/lib/active_support/testing/isolation.rb +++ b/activesupport/lib/active_support/testing/isolation.rb @@ -1,3 +1,5 @@ +require "active_support/core_ext/load_error" + module ActiveSupport module Testing class ProxyTestResult diff --git a/railties/bin/rails b/railties/bin/rails index e743aa83f1..808df97429 100755 --- a/railties/bin/rails +++ b/railties/bin/rails @@ -19,6 +19,7 @@ end ARGV << "--help" if ARGV.empty? +require 'rails' require 'rails/generators' require 'rails/generators/rails/app/app_generator' diff --git a/railties/builtin/rails_info/rails/info.rb b/railties/builtin/rails_info/rails/info.rb index 48d89ad06a..c3784cff32 100644 --- a/railties/builtin/rails_info/rails/info.rb +++ b/railties/builtin/rails_info/rails/info.rb @@ -75,7 +75,7 @@ module Rails protected def rails_vendor_root - @rails_vendor_root ||= "#{RAILS_ROOT}/vendor/rails" + @rails_vendor_root ||= "#{Rails.root}/vendor/rails" end def git_info @@ -124,7 +124,7 @@ module Rails # The application's location on the filesystem. property 'Application root' do - File.expand_path(RAILS_ROOT) + File.expand_path(Rails.root) end # The current Rails environment (development, test, or production). diff --git a/railties/guides/source/2_2_release_notes.textile b/railties/guides/source/2_2_release_notes.textile index f60af01050..15a7bdbd44 100644 --- a/railties/guides/source/2_2_release_notes.textile +++ b/railties/guides/source/2_2_release_notes.textile @@ -51,7 +51,7 @@ If you want to generate these guides locally, inside your application: rake doc:guides -This will put the guides inside +RAILS_ROOT/doc/guides+ and you may start surfing straight away by opening +RAILS_ROOT/doc/guides/index.html+ in your favourite browser. +This will put the guides inside +Rails.root/doc/guides+ and you may start surfing straight away by opening +Rails.root/doc/guides/index.html+ in your favourite browser. * Lead Contributors: "Rails Documentation Team":http://guides.rails.info/credits.html * Major contributions from "Xavier Noria":http://advogato.org/person/fxn/diary.html and "Hongli Lai":http://izumi.plan99.net/blog/. diff --git a/railties/guides/source/action_controller_overview.textile b/railties/guides/source/action_controller_overview.textile index 756caea5fe..46a28da8c4 100644 --- a/railties/guides/source/action_controller_overview.textile +++ b/railties/guides/source/action_controller_overview.textile @@ -653,7 +653,7 @@ class ClientsController < ApplicationController # Stream a file that has already been generated and stored on disk. def download_pdf client = Client.find(params[:id]) - send_data("#{RAILS_ROOT}/files/clients/#{client.id}.pdf", + send_data("#{Rails.root}/files/clients/#{client.id}.pdf", :filename => "#{client.name}.pdf", :type => "application/pdf") end diff --git a/railties/guides/source/command_line.textile b/railties/guides/source/command_line.textile index d042458419..1a571358a1 100644 --- a/railties/guides/source/command_line.textile +++ b/railties/guides/source/command_line.textile @@ -424,10 +424,10 @@ INFO: For a good rundown on generators, see "Understanding Generators":http://wi Generators are code that generates code. Let's experiment by building one. Our generator will generate a text file. -The Rails generator by default looks in these places for available generators, where RAILS_ROOT is the root of your Rails application, like /home/foobar/commandsapp: +The Rails generator by default looks in these places for available generators, where Rails.root is the root of your Rails application, like /home/foobar/commandsapp: -* RAILS_ROOT/lib/generators -* RAILS_ROOT/vendor/generators +* Rails.root/lib/generators +* Rails.root/vendor/generators * Inside any plugin with a directory like "generators" or "rails_generators" * ~/.rails/generators * Inside any Gem you have installed with a name ending in "_generator" @@ -465,7 +465,7 @@ We take whatever args are supplied, save them to an instance variable, and liter * Check there's a *public* directory. You bet there is. * Run the ERb template called "tutorial.erb". -* Save it into "RAILS_ROOT/public/tutorial.txt". +* Save it into "Rails.root/public/tutorial.txt". * Pass in the arguments we saved through the +:assign+ parameter. Next we'll build the template: diff --git a/railties/lib/rails/backtrace_cleaner.rb b/railties/lib/rails/backtrace_cleaner.rb index 9ff8367807..5507f40c0d 100644 --- a/railties/lib/rails/backtrace_cleaner.rb +++ b/railties/lib/rails/backtrace_cleaner.rb @@ -18,7 +18,7 @@ module Rails def initialize super - add_filter { |line| line.sub("#{RAILS_ROOT}/", '') } + add_filter { |line| line.sub("#{Rails.root}/", '') } add_filter { |line| line.sub(ERB_METHOD_SIG, '') } add_filter { |line| line.sub('./', '/') } # for tests @@ -37,7 +37,7 @@ module Rails add_filter { |line| line.sub(/(#{path})\/gems\/([a-z]+)-([0-9.]+)\/(.*)/, '\2 (\3) \4')} end - vendor_gems_path = Rails::GemDependency.unpacked_path.sub("#{RAILS_ROOT}/",'') + vendor_gems_path = Rails::GemDependency.unpacked_path.sub("#{Rails.root}/",'') add_filter { |line| line.sub(/(#{vendor_gems_path})\/([a-z]+)-([0-9.]+)\/(.*)/, '\2 (\3) [v] \4')} end end diff --git a/railties/lib/rails/commands/about.rb b/railties/lib/rails/commands/about.rb index 9a05c47390..54c12a266f 100644 --- a/railties/lib/rails/commands/about.rb +++ b/railties/lib/rails/commands/about.rb @@ -1,4 +1,3 @@ -require "#{RAILS_ROOT}/config/application" Rails.application.new require 'rails/info' puts Rails::Info diff --git a/railties/lib/rails/commands/console.rb b/railties/lib/rails/commands/console.rb index 31448bdf1a..b977b7162f 100644 --- a/railties/lib/rails/commands/console.rb +++ b/railties/lib/rails/commands/console.rb @@ -12,7 +12,7 @@ OptionParser.new do |opt| end libs = " -r irb/completion" -libs << %( -r "#{RAILS_ROOT}/config/environment") +libs << %( -r "#{Rails.root}/config/environment") libs << " -r rails/console_app" libs << " -r rails/console_sandbox" if options[:sandbox] libs << " -r rails/console_with_helpers" diff --git a/railties/lib/rails/commands/dbconsole.rb b/railties/lib/rails/commands/dbconsole.rb index e6f11a45db..4e699acf6b 100644 --- a/railties/lib/rails/commands/dbconsole.rb +++ b/railties/lib/rails/commands/dbconsole.rb @@ -25,7 +25,7 @@ OptionParser.new do |opt| end env = ARGV.first || ENV['RAILS_ENV'] || 'development' -unless config = YAML::load(ERB.new(IO.read(RAILS_ROOT + "/config/database.yml")).result)[env] +unless config = YAML::load(ERB.new(IO.read(Rails.root + "/config/database.yml")).result)[env] abort "No database is configured for the environment '#{env}'" end diff --git a/railties/lib/rails/commands/destroy.rb b/railties/lib/rails/commands/destroy.rb index 860c03e01e..1270fdd033 100644 --- a/railties/lib/rails/commands/destroy.rb +++ b/railties/lib/rails/commands/destroy.rb @@ -1,5 +1,4 @@ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'generators')) -require "#{RAILS_ROOT}/config/application" if ARGV.size == 0 Rails::Generators.help diff --git a/railties/lib/rails/commands/server.rb b/railties/lib/rails/commands/server.rb index c138cbc9bf..d29fa620fb 100644 --- a/railties/lib/rails/commands/server.rb +++ b/railties/lib/rails/commands/server.rb @@ -7,7 +7,7 @@ options = { :Port => 3000, :Host => "0.0.0.0", :environment => (ENV['RAILS_ENV'] || "development").dup, - :config => RAILS_ROOT + "/config.ru", + :config => Rails.root + "/config.ru", :detach => false, :debugger => false } @@ -46,7 +46,7 @@ puts "=> Rails #{Rails.version} application starting on http://#{options[:Host]} if options[:detach] Process.daemon - pid = "#{RAILS_ROOT}/tmp/pids/server.pid" + pid = "#{Rails.root}/tmp/pids/server.pid" File.open(pid, 'w'){ |f| f.write(Process.pid) } at_exit { File.delete(pid) if File.exist?(pid) } end diff --git a/railties/lib/rails/configuration.rb b/railties/lib/rails/configuration.rb index 3cb39245ff..ce9c899400 100644 --- a/railties/lib/rails/configuration.rb +++ b/railties/lib/rails/configuration.rb @@ -34,37 +34,25 @@ module Rails def root @root ||= begin - if defined?(RAILS_ROOT) - root = RAILS_ROOT - else - call_stack = caller.map { |p| p.split(':').first } - root_path = call_stack.detect { |p| p !~ %r[railties/lib/rails] } - root_path = File.dirname(root_path) + call_stack = caller.map { |p| p.split(':').first } + root_path = call_stack.detect { |p| p !~ %r[railties/lib/rails] } + root_path = File.dirname(root_path) - while root_path && File.directory?(root_path) && !File.exist?("#{root_path}/config.ru") - parent = File.dirname(root_path) - root_path = parent != root_path && parent - end - - Object.class_eval("RAILS_ROOT = ''") - - root = File.exist?("#{root_path}/config.ru") ? root_path : Dir.pwd + while root_path && File.directory?(root_path) && !File.exist?("#{root_path}/config.ru") + parent = File.dirname(root_path) + root_path = parent != root_path && parent end - root = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? - Pathname.new(root).expand_path.to_s : - Pathname.new(root).realpath.to_s + root = File.exist?("#{root_path}/config.ru") ? root_path : Dir.pwd - # TODO: Remove RAILS_ROOT - RAILS_ROOT.replace(root) - root + RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? + Pathname.new(root).expand_path : + Pathname.new(root).realpath end end def root=(root) - Object.class_eval("RAILS_ROOT = ''") unless defined?(RAILS_ROOT) - RAILS_ROOT.replace(root) - @root = root + @root = Pathname.new(root).expand_path end def paths diff --git a/railties/lib/rails/core.rb b/railties/lib/rails/core.rb index 929c38bd22..e15661e2d7 100644 --- a/railties/lib/rails/core.rb +++ b/railties/lib/rails/core.rb @@ -6,7 +6,7 @@ module Rails # TODO: w0t? class << self def application - @@application + @@application ||= nil end def application=(application) @@ -43,7 +43,7 @@ module Rails end def root - Pathname.new(RAILS_ROOT) if defined?(RAILS_ROOT) + application && application.config.root end def env diff --git a/railties/lib/rails/deprecation.rb b/railties/lib/rails/deprecation.rb new file mode 100644 index 0000000000..42bba151d6 --- /dev/null +++ b/railties/lib/rails/deprecation.rb @@ -0,0 +1,17 @@ +require "active_support/string_inquirer" +require "active_support/deprecation" + +RAILS_ROOT = (Class.new(ActiveSupport::Deprecation::DeprecationProxy) do + def target + Rails.root + end + + def replace(val) + puts OMG + end + + def warn(callstack, called, args) + msg = "RAILS_ROOT is deprecated! Use Rails.root instead." + ActiveSupport::Deprecation.warn(msg, callstack) + end +end).new \ No newline at end of file diff --git a/railties/lib/rails/gem_dependency.rb b/railties/lib/rails/gem_dependency.rb index 06d830ba24..804bd75e55 100644 --- a/railties/lib/rails/gem_dependency.rb +++ b/railties/lib/rails/gem_dependency.rb @@ -11,7 +11,7 @@ module Rails attr_accessor :lib, :source, :dep def self.unpacked_path - @unpacked_path ||= File.join(RAILS_ROOT, 'vendor', 'gems') + @unpacked_path ||= File.join(Rails.root, 'vendor', 'gems') end @@framework_gems = {} diff --git a/railties/lib/rails/generators.rb b/railties/lib/rails/generators.rb index 471eb45ee6..1010e51c94 100644 --- a/railties/lib/rails/generators.rb +++ b/railties/lib/rails/generators.rb @@ -92,8 +92,8 @@ module Rails generator_path = File.join(spec.full_gem_path, "lib/generators") paths << generator_path if File.exist?(generator_path) end - elsif defined?(RAILS_ROOT) - paths += Dir[File.join(RAILS_ROOT, "vendor", "gems", "gems", "*", "lib", "generators")] + elsif defined?(Rails.root) + paths += Dir[File.join(Rails.root, "vendor", "gems", "gems", "*", "lib", "generators")] end paths @@ -102,8 +102,8 @@ module Rails # Load paths from plugin. # def self.plugins_generators_paths - return [] unless defined?(RAILS_ROOT) - Dir[File.join(RAILS_ROOT, "vendor", "plugins", "*", "lib", "generators")] + return [] unless Rails.root + Dir[File.join(Rails.root, "vendor", "plugins", "*", "lib", "generators")] end # Hold configured generators fallbacks. If a plugin developer wants a @@ -143,7 +143,7 @@ module Rails def self.load_paths @load_paths ||= begin paths = [] - paths << File.join(RAILS_ROOT, "lib", "generators") if defined?(RAILS_ROOT) + paths << File.join(Rails.root, "lib", "generators") if Rails.root paths << File.join(Thor::Util.user_home, ".rails", "generators") paths += self.plugins_generators_paths paths += self.gems_generators_paths diff --git a/railties/lib/rails/generators/base.rb b/railties/lib/rails/generators/base.rb index 720caa5b3f..7af99797ea 100644 --- a/railties/lib/rails/generators/base.rb +++ b/railties/lib/rails/generators/base.rb @@ -203,8 +203,8 @@ module Rails super base.source_root # Cache source root - if defined?(RAILS_ROOT) && base.name !~ /Base$/ - path = File.expand_path(File.join(RAILS_ROOT, 'lib', 'templates')) + if Rails.root && base.name !~ /Base$/ + path = File.expand_path(File.join(Rails.root, 'lib', 'templates')) if base.name.include?('::') base.source_paths << File.join(path, base.base_name, base.generator_name) else diff --git a/railties/lib/rails/generators/rails/app/templates/config/application.rb b/railties/lib/rails/generators/rails/app/templates/config/application.rb index bff74a7786..cf786093ba 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/application.rb +++ b/railties/lib/rails/generators/rails/app/templates/config/application.rb @@ -7,7 +7,7 @@ Rails::Initializer.run do |config| # -- all .rb files in that directory are automatically loaded. # Add additional load paths for your own custom dirs - # config.load_paths += %W( #{RAILS_ROOT}/extras ) + # config.load_paths += %W( #{root}/extras ) # Specify gems that this application depends on and have them installed with rake gems:install # config.gem "bj" diff --git a/railties/lib/rails/generators/rails/app/templates/config/boot.rb b/railties/lib/rails/generators/rails/app/templates/config/boot.rb index 6e0e2279cd..12152a5d54 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/boot.rb +++ b/railties/lib/rails/generators/rails/app/templates/config/boot.rb @@ -1,8 +1,6 @@ # Don't change this file! # Configure your app in config/environment.rb and config/environments/*.rb -RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT) - module Rails # Mark the version of Rails that generated the boot.rb file. This is # a temporary solution and will most likely be removed as Rails 3.0 @@ -70,7 +68,6 @@ module Rails def load_initializer require "rails" install_gem_spec_stubs - Rails::GemDependency.add_frozen_gem_path end def install_gem_spec_stubs diff --git a/railties/lib/rails/initializer.rb b/railties/lib/rails/initializer.rb index bb86f70da6..070a385052 100644 --- a/railties/lib/rails/initializer.rb +++ b/railties/lib/rails/initializer.rb @@ -9,6 +9,7 @@ require 'rails/rack' require 'rails/paths' require 'rails/core' require 'rails/configuration' +require 'rails/deprecation' RAILS_ENV = (ENV['RAILS_ENV'] || 'development').dup unless defined?(RAILS_ENV) diff --git a/railties/lib/rails/plugin/loader.rb b/railties/lib/rails/plugin/loader.rb index 0d16cbd7c3..4808c6ad57 100644 --- a/railties/lib/rails/plugin/loader.rb +++ b/railties/lib/rails/plugin/loader.rb @@ -147,7 +147,7 @@ module Rails end def application_lib_index - $LOAD_PATH.index(File.join(RAILS_ROOT, 'lib')) || 0 + $LOAD_PATH.index(File.join(Rails.root, 'lib')) || 0 end def enabled?(plugin) diff --git a/railties/lib/rails/tasks.rb b/railties/lib/rails/tasks.rb index aad965306c..148a3d4d30 100644 --- a/railties/lib/rails/tasks.rb +++ b/railties/lib/rails/tasks.rb @@ -20,5 +20,5 @@ end # Load any custom rakefile extensions # TODO: Don't hardcode these paths. -Dir["#{RAILS_ROOT}/vendor/plugins/*/**/tasks/**/*.rake"].sort.each { |ext| load ext } -Dir["#{RAILS_ROOT}/lib/tasks/**/*.rake"].sort.each { |ext| load ext } +Dir["#{Rails.root}/vendor/plugins/*/**/tasks/**/*.rake"].sort.each { |ext| load ext } +Dir["#{Rails.root}/lib/tasks/**/*.rake"].sort.each { |ext| load ext } diff --git a/railties/lib/rails/tasks/databases.rake b/railties/lib/rails/tasks/databases.rake index ed015e7a67..70b59625f8 100644 --- a/railties/lib/rails/tasks/databases.rake +++ b/railties/lib/rails/tasks/databases.rake @@ -283,7 +283,7 @@ namespace :db do desc "Create a db/schema.rb file that can be portably used against any DB supported by AR" task :dump => :environment do require 'active_record/schema_dumper' - File.open(ENV['SCHEMA'] || "#{RAILS_ROOT}/db/schema.rb", "w") do |file| + File.open(ENV['SCHEMA'] || "#{Rails.root}/db/schema.rb", "w") do |file| ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file) end Rake::Task["db:schema:dump"].reenable @@ -291,11 +291,11 @@ namespace :db do desc "Load a schema.rb file into the database" task :load => :environment do - file = ENV['SCHEMA'] || "#{RAILS_ROOT}/db/schema.rb" + file = ENV['SCHEMA'] || "#{Rails.root}/db/schema.rb" if File.exists?(file) load(file) else - abort %{#{file} doesn't exist yet. Run "rake db:migrate" to create it then try again. If you do not intend to use a database, you should instead alter #{RAILS_ROOT}/config/environment.rb to prevent active_record from loading: config.frameworks -= [ :active_record ]} + abort %{#{file} doesn't exist yet. Run "rake db:migrate" to create it then try again. If you do not intend to use a database, you should instead alter #{Rails.root}/config/environment.rb to prevent active_record from loading: config.frameworks -= [ :active_record ]} end end end @@ -307,7 +307,7 @@ namespace :db do case abcs[RAILS_ENV]["adapter"] when "mysql", "oci", "oracle" ActiveRecord::Base.establish_connection(abcs[RAILS_ENV]) - File.open("#{RAILS_ROOT}/db/#{RAILS_ENV}_structure.sql", "w+") { |f| f << ActiveRecord::Base.connection.structure_dump } + File.open("#{Rails.root}/db/#{RAILS_ENV}_structure.sql", "w+") { |f| f << ActiveRecord::Base.connection.structure_dump } when "postgresql" ENV['PGHOST'] = abcs[RAILS_ENV]["host"] if abcs[RAILS_ENV]["host"] ENV['PGPORT'] = abcs[RAILS_ENV]["port"].to_s if abcs[RAILS_ENV]["port"] @@ -327,13 +327,13 @@ namespace :db do when "firebird" set_firebird_env(abcs[RAILS_ENV]) db_string = firebird_db_string(abcs[RAILS_ENV]) - sh "isql -a #{db_string} > #{RAILS_ROOT}/db/#{RAILS_ENV}_structure.sql" + sh "isql -a #{db_string} > #{Rails.root}/db/#{RAILS_ENV}_structure.sql" else raise "Task not supported by '#{abcs["test"]["adapter"]}'" end if ActiveRecord::Base.connection.supports_migrations? - File.open("#{RAILS_ROOT}/db/#{RAILS_ENV}_structure.sql", "a") { |f| f << ActiveRecord::Base.connection.dump_schema_information } + File.open("#{Rails.root}/db/#{RAILS_ENV}_structure.sql", "a") { |f| f << ActiveRecord::Base.connection.dump_schema_information } end end end @@ -356,28 +356,28 @@ namespace :db do when "mysql" ActiveRecord::Base.establish_connection(:test) ActiveRecord::Base.connection.execute('SET foreign_key_checks = 0') - IO.readlines("#{RAILS_ROOT}/db/#{RAILS_ENV}_structure.sql").join.split("\n\n").each do |table| + IO.readlines("#{Rails.root}/db/#{RAILS_ENV}_structure.sql").join.split("\n\n").each do |table| ActiveRecord::Base.connection.execute(table) end when "postgresql" ENV['PGHOST'] = abcs["test"]["host"] if abcs["test"]["host"] ENV['PGPORT'] = abcs["test"]["port"].to_s if abcs["test"]["port"] ENV['PGPASSWORD'] = abcs["test"]["password"].to_s if abcs["test"]["password"] - `psql -U "#{abcs["test"]["username"]}" -f #{RAILS_ROOT}/db/#{RAILS_ENV}_structure.sql #{abcs["test"]["database"]}` + `psql -U "#{abcs["test"]["username"]}" -f #{Rails.root}/db/#{RAILS_ENV}_structure.sql #{abcs["test"]["database"]}` when "sqlite", "sqlite3" dbfile = abcs["test"]["database"] || abcs["test"]["dbfile"] - `#{abcs["test"]["adapter"]} #{dbfile} < #{RAILS_ROOT}/db/#{RAILS_ENV}_structure.sql` + `#{abcs["test"]["adapter"]} #{dbfile} < #{Rails.root}/db/#{RAILS_ENV}_structure.sql` when "sqlserver" `osql -E -S #{abcs["test"]["host"]} -d #{abcs["test"]["database"]} -i db\\#{RAILS_ENV}_structure.sql` when "oci", "oracle" ActiveRecord::Base.establish_connection(:test) - IO.readlines("#{RAILS_ROOT}/db/#{RAILS_ENV}_structure.sql").join.split(";\n\n").each do |ddl| + IO.readlines("#{Rails.root}/db/#{RAILS_ENV}_structure.sql").join.split(";\n\n").each do |ddl| ActiveRecord::Base.connection.execute(ddl) end when "firebird" set_firebird_env(abcs["test"]) db_string = firebird_db_string(abcs["test"]) - sh "isql -i #{RAILS_ROOT}/db/#{RAILS_ENV}_structure.sql #{db_string}" + sh "isql -i #{Rails.root}/db/#{RAILS_ENV}_structure.sql #{db_string}" else raise "Task not supported by '#{abcs["test"]["adapter"]}'" end @@ -446,7 +446,7 @@ def drop_database(config) when /^sqlite/ require 'pathname' path = Pathname.new(config['database']) - file = path.absolute? ? path.to_s : File.join(RAILS_ROOT, path) + file = path.absolute? ? path.to_s : File.join(Rails.root, path) FileUtils.rm(file) when 'postgresql' diff --git a/railties/lib/rails/tasks/framework.rake b/railties/lib/rails/tasks/framework.rake index 16dd0af44e..3d7e4b5453 100644 --- a/railties/lib/rails/tasks/framework.rake +++ b/railties/lib/rails/tasks/framework.rake @@ -86,7 +86,7 @@ namespace :rails do template = File.expand_path(template) if template !~ %r{\A[A-Za-z][A-Za-z0-9+\-\.]*://} require 'generators' - generator = Rails::Generators::App.new [ RAILS_ROOT ], {}, :destination_root => RAILS_ROOT + generator = Rails::Generators::App.new [ Rails.root ], {}, :destination_root => Rails.root generator.apply template, :verbose => false end @@ -96,7 +96,7 @@ namespace :rails do require 'rails/generators/rails/app/app_generator' generator = Rails::Generators::AppGenerator.new ["rails"], { :with_dispatchers => true }, - :destination_root => RAILS_ROOT + :destination_root => Rails.root generator.invoke(method) end @@ -117,8 +117,8 @@ namespace :rails do desc "Rename application.rb to application_controller.rb" task :application_controller do - old_style = RAILS_ROOT + '/app/controllers/application.rb' - new_style = RAILS_ROOT + '/app/controllers/application_controller.rb' + old_style = Rails.root + '/app/controllers/application.rb' + new_style = Rails.root + '/app/controllers/application_controller.rb' if File.exists?(old_style) && !File.exists?(new_style) FileUtils.mv(old_style, new_style) puts "#{old_style} has been renamed to #{new_style}, update your SCM as necessary" diff --git a/railties/lib/rails/tasks/gems.rake b/railties/lib/rails/tasks/gems.rake index f1c34c7cca..1903efd5f6 100644 --- a/railties/lib/rails/tasks/gems.rake +++ b/railties/lib/rails/tasks/gems.rake @@ -61,7 +61,7 @@ def current_gems end def frozen_gems(load_specs=true) - Dir[File.join(RAILS_ROOT, 'vendor', 'gems', '*-*')].map do |gem_dir| + Dir[File.join(Rails.root, 'vendor', 'gems', '*-*')].map do |gem_dir| Rails::GemDependency.from_directory_name(gem_dir, load_specs) end end diff --git a/railties/lib/rails/tasks/misc.rake b/railties/lib/rails/tasks/misc.rake index fb2fc31dc1..7f244ebaed 100644 --- a/railties/lib/rails/tasks/misc.rake +++ b/railties/lib/rails/tasks/misc.rake @@ -1,7 +1,7 @@ task :default => :test task :environment do $rails_rake_task = true - require(File.join(RAILS_ROOT, 'config', 'environment')) + require(File.join(Rails.root, 'config', 'environment')) end task :rails_env do diff --git a/railties/lib/rails/test_help.rb b/railties/lib/rails/test_help.rb index 8bd4475c7b..9f6c42945f 100644 --- a/railties/lib/rails/test_help.rb +++ b/railties/lib/rails/test_help.rb @@ -17,7 +17,7 @@ if defined?(ActiveRecord) class ActiveSupport::TestCase include ActiveRecord::TestFixtures - self.fixture_path = "#{RAILS_ROOT}/test/fixtures/" + self.fixture_path = "#{Rails.root}/test/fixtures/" self.use_instantiated_fixtures = false self.use_transactional_fixtures = true end diff --git a/railties/test/abstract_unit.rb b/railties/test/abstract_unit.rb index 551468b3e8..8010481609 100644 --- a/railties/test/abstract_unit.rb +++ b/railties/test/abstract_unit.rb @@ -14,15 +14,15 @@ $:.unshift File.dirname(__FILE__) + "/../builtin/rails_info" require 'stringio' require 'test/unit' +require 'fileutils' require 'active_support' require 'active_support/core_ext/logger' require 'active_support/test_case' require 'action_controller' +require 'rails' -if defined?(RAILS_ROOT) - RAILS_ROOT.replace File.dirname(__FILE__) -else - RAILS_ROOT = File.dirname(__FILE__) -end +Rails::Initializer.run do |config| + config.root = File.dirname(__FILE__) +end \ No newline at end of file diff --git a/railties/test/application/configuration_test.rb b/railties/test/application/configuration_test.rb index d90582d3db..0452208cae 100644 --- a/railties/test/application/configuration_test.rb +++ b/railties/test/application/configuration_test.rb @@ -12,7 +12,7 @@ module ApplicationTests test "the application root is set correctly" do require "#{app_path}/config/environment" - assert_equal app_path, Rails.application.root + assert_equal Pathname.new(app_path), Rails.application.root end test "the application root can be set" do @@ -22,7 +22,7 @@ module ApplicationTests config.root = '#{app_path}/hello' RUBY require "#{app_path}/config/environment" - assert_equal "#{app_path}/hello", Rails.application.root + assert_equal Pathname.new("#{app_path}/hello"), Rails.application.root end test "the application root is detected as where config.ru is located" do @@ -31,7 +31,7 @@ module ApplicationTests RUBY FileUtils.mv "#{app_path}/config.ru", "#{app_path}/config/config.ru" require "#{app_path}/config/environment" - assert_equal "#{app_path}/config", Rails.application.root + assert_equal Pathname.new("#{app_path}/config"), Rails.application.root end test "the application root is Dir.pwd if there is no config.ru" do @@ -42,7 +42,7 @@ module ApplicationTests Dir.chdir("#{app_path}/app") do require "#{app_path}/config/environment" - assert_equal "#{app_path}/app", Rails.application.root + assert_equal Pathname.new("#{app_path}/app"), Rails.application.root end end end diff --git a/railties/test/application/generators_test.rb b/railties/test/application/generators_test.rb index c664b61137..25c82578a3 100644 --- a/railties/test/application/generators_test.rb +++ b/railties/test/application/generators_test.rb @@ -37,6 +37,7 @@ module ApplicationTests test "generators aliases and options on initialization" do Rails::Initializer.run do |c| + c.frameworks = [] c.generators.rails :aliases => { :test_framework => "-w" } c.generators.orm :datamapper c.generators.test_framework :rspec @@ -50,6 +51,7 @@ module ApplicationTests test "generators no color on initialization" do Rails::Initializer.run do |c| + c.frameworks = [] c.generators.colorize_logging = false end # Initialize the application diff --git a/railties/test/application/initializer_test.rb b/railties/test/application/initializer_test.rb index 76486d8f2c..805ff8b6be 100644 --- a/railties/test/application/initializer_test.rb +++ b/railties/test/application/initializer_test.rb @@ -10,33 +10,38 @@ module ApplicationTests end test "initializing an application initializes rails" do - class MyApp < Rails::Application ; end + Rails::Initializer.run do |config| + config.root = app_path + end if RUBY_VERSION < '1.9' $KCODE = '' - MyApp.new + Rails.application.new assert_equal 'UTF8', $KCODE else Encoding.default_external = Encoding::US_ASCII - MyApp.new + Rails.application.new assert_equal Encoding::UTF_8, Encoding.default_external end end test "initializing an application adds the application paths to the load path" do - class MyApp < Rails::Application ; end + Rails::Initializer.run do |config| + config.root = app_path + end - MyApp.new + Rails.application.new assert $:.include?("#{app_path}/app/models") end test "adding an unknown framework raises an error" do - class MyApp < Rails::Application + Rails::Initializer.run do |config| + config.root = app_path config.frameworks << :action_foo end assert_raises RuntimeError do - MyApp.new + Rails.application.new end end @@ -49,6 +54,7 @@ module ApplicationTests ZOO Rails::Initializer.run do |config| + config.root = app_path config.eager_load_paths = "#{app_path}/lib" end @@ -60,7 +66,7 @@ module ApplicationTests test "load environment with global" do app_file "config/environments/development.rb", "$initialize_test_set_from_env = 'success'" assert_nil $initialize_test_set_from_env - Rails::Initializer.run { } + Rails::Initializer.run { |config| config.root = app_path } Rails.application.new assert_equal "success", $initialize_test_set_from_env end @@ -68,6 +74,7 @@ module ApplicationTests test "action_controller load paths set only if action controller in use" do assert_nothing_raised NameError do Rails::Initializer.run do |config| + config.root = app_path config.frameworks = [] end Rails.application.new @@ -76,6 +83,7 @@ module ApplicationTests test "action_pack is added to the load path if action_controller is required" do Rails::Initializer.run do |config| + config.root = app_path config.frameworks = [:action_controller] end Rails.application.new @@ -85,6 +93,7 @@ module ApplicationTests test "action_pack is added to the load path if action_view is required" do Rails::Initializer.run do |config| + config.root = app_path config.frameworks = [:action_view] end Rails.application.new @@ -94,6 +103,7 @@ module ApplicationTests test "after_initialize block works correctly" do Rails::Initializer.run do |config| + config.root = app_path config.after_initialize { $test_after_initialize_block1 = "success" } config.after_initialize { $test_after_initialize_block2 = "congratulations" } end @@ -105,6 +115,7 @@ module ApplicationTests test "after_initialize block works correctly when no block is passed" do Rails::Initializer.run do |config| + config.root = app_path config.after_initialize { $test_after_initialize_block1 = "success" } config.after_initialize # don't pass a block, this is what we're testing! config.after_initialize { $test_after_initialize_block2 = "congratulations" } @@ -118,6 +129,7 @@ module ApplicationTests # i18n test "setting another default locale" do Rails::Initializer.run do |config| + config.root = app_path config.i18n.default_locale = :de end Rails.application.new @@ -128,18 +140,21 @@ module ApplicationTests test "no config locales dir present should return empty load path" do FileUtils.rm_rf "#{app_path}/config/locales" Rails::Initializer.run do |c| + c.root = app_path assert_equal [], c.i18n.load_path end end test "config locales dir present should be added to load path" do Rails::Initializer.run do |c| + c.root = app_path assert_equal ["#{app_path}/config/locales/en.yml"], c.i18n.load_path end end test "config defaults should be added with config settings" do Rails::Initializer.run do |c| + c.root = app_path c.i18n.load_path << "my/other/locale.yml" end @@ -151,6 +166,7 @@ module ApplicationTests # DB middleware test "database middleware doesn't initialize when session store is not active_record" do Rails::Initializer.run do |config| + config.root = app_path config.action_controller.session_store = :cookie_store end Rails.application.new @@ -160,6 +176,7 @@ module ApplicationTests test "database middleware doesn't initialize when activerecord is not in frameworks" do Rails::Initializer.run do |c| + c.root = app_path c.frameworks = [] end assert_equal [], Rails.application.config.middleware @@ -167,6 +184,7 @@ module ApplicationTests test "database middleware initializes when session store is active record" do Rails::Initializer.run do |c| + c.root = app_path c.action_controller.session_store = :active_record_store end Rails.application.new @@ -178,6 +196,7 @@ module ApplicationTests test "ensure database middleware doesn't use action_controller on initializing" do Rails::Initializer.run do |c| + c.root = app_path c.frameworks -= [:action_controller] c.action_controller.session_store = :active_record_store end @@ -189,6 +208,7 @@ module ApplicationTests # Pathview test test "load view paths doesn't perform anything when action_view not in frameworks" do Rails::Initializer.run do |c| + c.root = app_path c.frameworks -= [:action_view] end Rails.application.new @@ -197,12 +217,11 @@ module ApplicationTests assert_equal [], ActionController::Base.view_paths end - # Rails root test - test "Rails.root == RAILS_ROOT" do - assert_equal RAILS_ROOT, Rails.root.to_s - end - test "Rails.root should be a Pathname" do + Rails::Initializer.run do |c| + c.root = app_path + end + Rails.application.new assert_instance_of Pathname, Rails.root end end diff --git a/railties/test/application/plugins_test.rb b/railties/test/application/plugins_test.rb index a4cf322139..6ea6d49460 100644 --- a/railties/test/application/plugins_test.rb +++ b/railties/test/application/plugins_test.rb @@ -17,7 +17,7 @@ module ApplicationTests end test "all plugins are loaded when registered plugin list is untouched" do - Rails::Initializer.run { } + Rails::Initializer.run { |c| c.root = app_path } Rails.application.new assert_plugins [ :a, :acts_as_chunky_bacon, :engine, :gemlike, :plugin_with_no_lib_dir, :stubby @@ -25,19 +25,20 @@ module ApplicationTests end test "no plugins are loaded if the configuration has an empty plugin list" do - Rails::Initializer.run { |c| c.plugins = [] } + Rails::Initializer.run { |c| c.root = app_path; c.plugins = [] } assert_plugins [], Rails.application.config.loaded_plugins end test "only the specified plugins are located in the order listed" do plugin_names = [:plugin_with_no_lib_dir, :acts_as_chunky_bacon] - Rails::Initializer.run { |c| c.plugins = plugin_names } + Rails::Initializer.run { |c| c.root = app_path; c.plugins = plugin_names } Rails.application.new assert_plugins plugin_names, Rails.application.config.loaded_plugins end test "all plugins loaded after all" do Rails::Initializer.run do |config| + config.root = app_path config.plugins = [:stubby, :all, :acts_as_chunky_bacon] end Rails.application.new @@ -47,6 +48,7 @@ module ApplicationTests test "plugin names may be strings" do plugin_names = ['stubby', 'acts_as_chunky_bacon', :a, :plugin_with_no_lib_dir] Rails::Initializer.run do |config| + config.root = app_path config.plugins = ['stubby', 'acts_as_chunky_bacon', :a, :plugin_with_no_lib_dir] end Rails.application.new @@ -56,6 +58,7 @@ module ApplicationTests test "all plugins loaded when all is used" do Rails::Initializer.run do |config| + config.root = app_path config.plugins = [:stubby, :acts_as_chunky_bacon, :all] end Rails.application.new @@ -65,6 +68,7 @@ module ApplicationTests test "all loaded plugins are added to the load paths" do Rails::Initializer.run do |config| + config.root = app_path config.plugins = [:stubby, :acts_as_chunky_bacon] end Rails.application.new @@ -75,6 +79,7 @@ module ApplicationTests test "registering a plugin name that does not exist raises a load error" do Rails::Initializer.run do |config| + config.root = app_path config.plugins = [:stubby, :acts_as_a_non_existant_plugin] end @@ -89,6 +94,7 @@ module ApplicationTests begin Rails::Initializer.run do |config| + config.root = app_path config.plugins = [:stubby, :acts_as_chunky_bacon, :non_existant_plugin1, :non_existant_plugin2] end Rails.application.new diff --git a/railties/test/backtrace_cleaner_test.rb b/railties/test/backtrace_cleaner_test.rb index c3e4f970fe..f9b9d3168d 100644 --- a/railties/test/backtrace_cleaner_test.rb +++ b/railties/test/backtrace_cleaner_test.rb @@ -1,6 +1,4 @@ require 'abstract_unit' - -require 'rails/initializer' require 'rails/backtrace_cleaner' if defined? Test::Unit::Util::BacktraceFilter diff --git a/railties/test/boot_test.rb b/railties/test/boot_test.rb index 1280d27ffe..46ef01f54c 100644 --- a/railties/test/boot_test.rb +++ b/railties/test/boot_test.rb @@ -57,7 +57,6 @@ class VendorBootTest < Test::Unit::TestCase boot = VendorBoot.new boot.expects(:require).with("rails") boot.expects(:install_gem_spec_stubs) - Rails::GemDependency.expects(:add_frozen_gem_path) boot.load_initializer end end diff --git a/railties/test/generators/generators_test_helper.rb b/railties/test/generators/generators_test_helper.rb index 7599bda8a2..ccf08c347c 100644 --- a/railties/test/generators/generators_test_helper.rb +++ b/railties/test/generators/generators_test_helper.rb @@ -1,24 +1,10 @@ -require 'test/unit' -require 'fileutils' - -fixtures = File.expand_path(File.join(File.dirname(__FILE__), '..', 'fixtures')) -if defined?(RAILS_ROOT) - RAILS_ROOT.replace fixtures -else - RAILS_ROOT = fixtures -end - -$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../../../activemodel/lib" -$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../../../activerecord/lib" -$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../../../actionpack/lib" -$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../../lib" # TODO: Fix this RAILS_ENV stuff RAILS_ENV = 'test' -require "rails/core" + +require 'abstract_unit' +Rails.application.config.root = File.expand_path(File.join(File.dirname(__FILE__), '..', 'fixtures')) require 'rails/generators' - require 'rubygems' - require 'active_record' require 'action_dispatch' diff --git a/railties/test/initializer/initialize_i18n_test.rb b/railties/test/initializer/initialize_i18n_test.rb index f952d06f94..5d921cb21a 100644 --- a/railties/test/initializer/initialize_i18n_test.rb +++ b/railties/test/initializer/initialize_i18n_test.rb @@ -12,6 +12,7 @@ module InitializerTests # test_config_defaults_and_settings_should_be_added_to_i18n_defaults test "i18n config defaults and settings should be added to i18n defaults" do Rails::Initializer.run do |c| + c.root = app_path c.i18n.load_path << "my/other/locale.yml" end Rails.application.new @@ -34,6 +35,7 @@ module InitializerTests app_file "vendor/plugins/engine/config/locales/en.yml", "hello:" Rails::Initializer.run do |c| + c.root = app_path c.i18n.load_path << "my/other/locale.yml" end Rails.application.new diff --git a/railties/test/initializer/path_test.rb b/railties/test/initializer/path_test.rb index ce8fc4b8b0..29acbdbd25 100644 --- a/railties/test/initializer/path_test.rb +++ b/railties/test/initializer/path_test.rb @@ -7,6 +7,7 @@ class PathsTest < Test::Unit::TestCase build_app boot_rails Rails::Initializer.run do |config| + config.root = app_path config.frameworks = [:action_controller, :action_view, :action_mailer, :active_record] config.after_initialize do ActionController::Base.session_store = nil diff --git a/railties/test/initializer_test.rb b/railties/test/initializer_test.rb deleted file mode 100644 index 80e774b7b7..0000000000 --- a/railties/test/initializer_test.rb +++ /dev/null @@ -1,20 +0,0 @@ -require 'abstract_unit' -require 'rails/initializer' -require 'rails/generators' - -require 'action_view' -require 'action_mailer' -require 'active_record' - -require 'plugin_test_helper' - -class RailsRootTest < Test::Unit::TestCase - def test_rails_dot_root_equals_rails_root - assert_equal RAILS_ROOT, Rails.root.to_s - end - - def test_rails_dot_root_should_be_a_pathname - assert_equal File.join(RAILS_ROOT, 'app', 'controllers'), Rails.root.join('app', 'controllers').to_s - end -end -