From 564097b8d9ca1de00a7163523b4360e03abd071d Mon Sep 17 00:00:00 2001 From: Kieran Pilkington Date: Sat, 8 Aug 2009 18:11:55 +1200 Subject: [PATCH] Adding Rails.tmpdir configuration setting that allows you to change where tmp files are stored in your system. --- .../lib/active_support/testing/performance.rb | 4 ++-- railties/lib/commands/server.rb | 4 ++-- railties/lib/rails/configuration.rb | 6 +++--- railties/lib/rails/core.rb | 8 ++++++++ railties/lib/tasks/tmp.rake | 8 ++++---- 5 files changed, 19 insertions(+), 11 deletions(-) diff --git a/activesupport/lib/active_support/testing/performance.rb b/activesupport/lib/active_support/testing/performance.rb index f8d12e8..a96b283 100644 --- a/activesupport/lib/active_support/testing/performance.rb +++ b/activesupport/lib/active_support/testing/performance.rb @@ -13,14 +13,14 @@ module ActiveSupport { :benchmark => true, :runs => 4, :metrics => [:wall_time, :memory, :objects, :gc_runs, :gc_time], - :output => 'tmp/performance' } + :output => defined?(Rails) ? File.join(Rails.tmpdir, 'performance') : 'tmp/performance' } else { :benchmark => false, :runs => 1, :min_percent => 0.01, :metrics => [:process_time, :memory, :objects], :formats => [:flat, :graph_html, :call_tree], - :output => 'tmp/performance' } + :output => defined?(Rails) ? File.join(Rails.tmpdir, 'performance') : 'tmp/performance' } end.freeze def self.included(base) diff --git a/railties/lib/commands/server.rb b/railties/lib/commands/server.rb index 823916b..075583a 100644 --- a/railties/lib/commands/server.rb +++ b/railties/lib/commands/server.rb @@ -47,12 +47,12 @@ puts "=> Booting #{ActiveSupport::Inflector.demodulize(server)}" puts "=> Rails #{Rails.version} application starting on http://#{options[:Host]}:#{options[:Port]}#{options[:path]}" %w(cache pids sessions sockets).each do |dir_to_make| - FileUtils.mkdir_p(File.join(RAILS_ROOT, 'tmp', dir_to_make)) + FileUtils.mkdir_p(File.join(Rails.tmpdir, dir_to_make)) end if options[:detach] Process.daemon - pid = "#{RAILS_ROOT}/tmp/pids/server.pid" + pid = File.join(Rails.tmpdir, '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 fe3cb67..532f87d 100644 --- a/railties/lib/rails/configuration.rb +++ b/railties/lib/rails/configuration.rb @@ -71,7 +71,7 @@ module Rails @paths.lib "lib", :load_path => true @paths.vendor "vendor", :load_path => true @paths.vendor.plugins "vendor/plugins" - @paths.cache "tmp/cache" + @paths.cache "#{Rails.tmpdir}/cache" @paths.config "config" @paths.config.locales "config/locales" @paths.config.environments "config/environments", :glob => "#{RAILS_ENV}.rb" @@ -130,8 +130,8 @@ module Rails end def default_cache_store - if File.exist?("#{root_path}/tmp/cache/") - [ :file_store, "#{root_path}/tmp/cache/" ] + if File.exist? File.join(Rails.tmpdir, 'cache') + [ :file_store, File.join(Rails.tmpdir, 'cache') ] else :memory_store end diff --git a/railties/lib/rails/core.rb b/railties/lib/rails/core.rb index 33695a2..98c19f0 100644 --- a/railties/lib/rails/core.rb +++ b/railties/lib/rails/core.rb @@ -61,6 +61,14 @@ module Rails def public_path=(path) @@public_path = path end + + def tmpdir + @@tmpdir ||= self.root ? File.expand_path(File.join(self.root, "tmp")) : "tmp" + end + + def tmpdir=(path) + @@tmpdr = path + end end class OrderedOptions < Array #:nodoc: diff --git a/railties/lib/tasks/tmp.rake b/railties/lib/tasks/tmp.rake index fea1505..566177c 100644 --- a/railties/lib/tasks/tmp.rake +++ b/railties/lib/tasks/tmp.rake @@ -10,28 +10,28 @@ namespace :tmp do namespace :sessions do desc "Clears all files in tmp/sessions" task :clear do - FileUtils.rm(Dir['tmp/sessions/[^.]*']) + FileUtils.rm(Dir[File.join(Rails.tmpdir, '/sessions/[^.]*')]) end end namespace :cache do desc "Clears all files and directories in tmp/cache" task :clear do - FileUtils.rm_rf(Dir['tmp/cache/[^.]*']) + FileUtils.rm_rf(Dir[File.join(Rails.tmpdir, '/cache/[^.]*')]) end end namespace :sockets do desc "Clears all files in tmp/sockets" task :clear do - FileUtils.rm(Dir['tmp/sockets/[^.]*']) + FileUtils.rm(Dir[File.join(Rails.tmpdir, '/sockets/[^.]*')]) end end namespace :pids do desc "Clears all files in tmp/pids" task :clear do - FileUtils.rm(Dir['tmp/pids/[^.]*']) + FileUtils.rm(Dir[File.join(Rails.tmpdir, '/pids/[^.]*')]) end end end -- 1.6.3.3