aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
Diffstat (limited to 'railties')
-rw-r--r--railties/CHANGELOG9
-rw-r--r--railties/Rakefile10
-rw-r--r--railties/builtin/rails_info/rails/info_controller.rb2
-rw-r--r--railties/configs/initializers/new_rails_defaults.rb10
-rw-r--r--railties/lib/initializer.rb14
-rw-r--r--railties/lib/rails/gem_dependency.rb20
-rw-r--r--railties/lib/rails/rack.rb5
-rw-r--r--railties/lib/rails/rack/static.rb35
-rw-r--r--railties/lib/rails/version.rb4
-rw-r--r--railties/test/gem_dependency_test.rb16
-rw-r--r--railties/test/initializer_test.rb34
11 files changed, 105 insertions, 54 deletions
diff --git a/railties/CHANGELOG b/railties/CHANGELOG
index 7f1c6ad747..abadeb693f 100644
--- a/railties/CHANGELOG
+++ b/railties/CHANGELOG
@@ -1,10 +1,11 @@
-*SVN*
+*Edge*
-* Consolidate error messages for missing gems, and skip them when running rake gems:* tasks. [rick]
+* Wrapped Rails.env in StringQuestioneer so you can do Rails.env.development? [DHH]
-* Use a system command to install gems, since GemRunner exits the ruby process. #210 [Tim Morgan]
+* Fixed that RailsInfoController wasn't considering all requests local in development mode (Edgard Castro) [#310 state:resolved]
-*2.1.0 RC1 (May 11th, 2008)*
+
+*2.1.0 (May 31st, 2008)*
* script/dbconsole fires up the command-line database client. #102 [Steve Purcell]
diff --git a/railties/Rakefile b/railties/Rakefile
index 45ba394299..a1d1095c37 100644
--- a/railties/Rakefile
+++ b/railties/Rakefile
@@ -304,11 +304,11 @@ spec = Gem::Specification.new do |s|
EOF
s.add_dependency('rake', '>= 0.8.1')
- s.add_dependency('activesupport', '= 2.0.991' + PKG_BUILD)
- s.add_dependency('activerecord', '= 2.0.991' + PKG_BUILD)
- s.add_dependency('actionpack', '= 2.0.991' + PKG_BUILD)
- s.add_dependency('actionmailer', '= 2.0.991' + PKG_BUILD)
- s.add_dependency('activeresource', '= 2.0.991' + PKG_BUILD)
+ s.add_dependency('activesupport', '= 2.1.0' + PKG_BUILD)
+ s.add_dependency('activerecord', '= 2.1.0' + PKG_BUILD)
+ s.add_dependency('actionpack', '= 2.1.0' + PKG_BUILD)
+ s.add_dependency('actionmailer', '= 2.1.0' + PKG_BUILD)
+ s.add_dependency('activeresource', '= 2.1.0' + PKG_BUILD)
s.rdoc_options << '--exclude' << '.'
s.has_rdoc = false
diff --git a/railties/builtin/rails_info/rails/info_controller.rb b/railties/builtin/rails_info/rails/info_controller.rb
index 39f8b1f120..05745d606d 100644
--- a/railties/builtin/rails_info/rails/info_controller.rb
+++ b/railties/builtin/rails_info/rails/info_controller.rb
@@ -1,6 +1,6 @@
class Rails::InfoController < ActionController::Base
def properties
- if local_request?
+ if consider_all_requests_local || local_request?
render :inline => Rails::Info.to_html
else
render :text => '<p>For security purposes, this information is only available to local requests.</p>', :status => 500
diff --git a/railties/configs/initializers/new_rails_defaults.rb b/railties/configs/initializers/new_rails_defaults.rb
index 5e60c0ade4..78e0117cc4 100644
--- a/railties/configs/initializers/new_rails_defaults.rb
+++ b/railties/configs/initializers/new_rails_defaults.rb
@@ -1,11 +1,13 @@
# These settings change the behavior of Rails 2 apps and will be defaults
# for Rails 3. You can remove this initializer when Rails 3 is released.
-# Include Active Record class name as root for JSON serialized output.
-ActiveRecord::Base.include_root_in_json = true
+if defined?(ActiveRecord)
+ # Include Active Record class name as root for JSON serialized output.
+ ActiveRecord::Base.include_root_in_json = true
-# Store the full class name (including module namespace) in STI type column.
-ActiveRecord::Base.store_full_sti_class = true
+ # Store the full class name (including module namespace) in STI type column.
+ ActiveRecord::Base.store_full_sti_class = true
+end
# Use ISO 8601 format for JSON serialized times and dates.
ActiveSupport.use_standard_json_time_format = true
diff --git a/railties/lib/initializer.rb b/railties/lib/initializer.rb
index ca63fa734b..d80d014527 100644
--- a/railties/lib/initializer.rb
+++ b/railties/lib/initializer.rb
@@ -8,6 +8,7 @@ require 'rails/version'
require 'rails/plugin/locator'
require 'rails/plugin/loader'
require 'rails/gem_dependency'
+require 'rails/rack'
RAILS_ENV = (ENV['RAILS_ENV'] || 'development').dup unless defined?(RAILS_ENV)
@@ -36,7 +37,7 @@ module Rails
end
def env
- RAILS_ENV
+ StringQuestioneer.new(RAILS_ENV)
end
def cache
@@ -78,7 +79,10 @@ module Rails
# The set of loaded plugins.
attr_reader :loaded_plugins
-
+
+ # Whether or not all the gem dependencies have been met
+ attr_reader :gems_dependencies_loaded
+
# Runs the initializer. By default, this will invoke the #process method,
# which simply executes all of the initialization routines. Alternately,
# you can specify explicitly which initialization routine you want:
@@ -306,7 +310,7 @@ module Rails
end
def load_observers
- if @gems_dependencies_loaded && configuration.frameworks.include?(:active_record)
+ if gems_dependencies_loaded && configuration.frameworks.include?(:active_record)
ActiveRecord::Base.instantiate_observers
end
end
@@ -462,7 +466,7 @@ module Rails
# Fires the user-supplied after_initialize block (Configuration#after_initialize)
def after_initialize
- if @gems_dependencies_loaded
+ if gems_dependencies_loaded
configuration.after_initialize_blocks.each do |block|
block.call
end
@@ -470,7 +474,7 @@ module Rails
end
def load_application_initializers
- if @gems_dependencies_loaded
+ if gems_dependencies_loaded
Dir["#{configuration.root_path}/config/initializers/**/*.rb"].sort.each do |initializer|
load(initializer)
end
diff --git a/railties/lib/rails/gem_dependency.rb b/railties/lib/rails/gem_dependency.rb
index 0e39f6fd0a..30bdf416fc 100644
--- a/railties/lib/rails/gem_dependency.rb
+++ b/railties/lib/rails/gem_dependency.rb
@@ -31,13 +31,15 @@ module Rails
args << @requirement.to_s if @requirement
gem *args
else
- $LOAD_PATH << File.join(unpacked_paths.first, 'lib')
+ $LOAD_PATH.unshift File.join(unpacked_paths.first, 'lib')
+ ext = File.join(unpacked_paths.first, 'ext')
+ $LOAD_PATH.unshift(ext) if File.exist?(ext)
@frozen = true
end
@load_paths_added = true
rescue Gem::LoadError
end
-
+
def dependencies
all_dependencies = specification.dependencies.map do |dependency|
GemDependency.new(dependency.name, :requirement => dependency.version_requirements)
@@ -45,7 +47,7 @@ module Rails
all_dependencies += all_dependencies.map(&:dependencies).flatten
all_dependencies.uniq
end
-
+
def gem_dir(base_directory)
File.join(base_directory, specification.full_name)
end
@@ -76,13 +78,13 @@ module Rails
puts cmd
puts %x(#{cmd})
end
-
+
def unpack_to(directory)
FileUtils.mkdir_p directory
Dir.chdir directory do
Gem::GemRunner.new.run(unpack_command)
end
-
+
# copy the gem's specification into GEMDIR/.specification so that
# we can access information about the gem on deployment systems
# without having the gem installed
@@ -101,7 +103,7 @@ private ###################################################################
def specification
@spec ||= Gem.source_index.search(Gem::Dependency.new(@name, @requirement)).sort_by { |s| s.version }.last
end
-
+
def gem_command
RUBY_PLATFORM =~ /win32/ ? 'gem.bat' : 'gem'
end
@@ -112,11 +114,11 @@ private ###################################################################
cmd << "--source" << @source if @source
cmd
end
-
+
def unpack_command
cmd = %w(unpack) << @name
- cmd << "--version" << "#{@requirement.to_s}" if @requirement
+ cmd << "--version" << %("#{@requirement.to_s}") if @requirement
cmd
end
end
-end \ No newline at end of file
+end
diff --git a/railties/lib/rails/rack.rb b/railties/lib/rails/rack.rb
new file mode 100644
index 0000000000..abcd0741bf
--- /dev/null
+++ b/railties/lib/rails/rack.rb
@@ -0,0 +1,5 @@
+module Rails
+ module Rack
+ autoload :Static, "rails/rack/static"
+ end
+end
diff --git a/railties/lib/rails/rack/static.rb b/railties/lib/rails/rack/static.rb
new file mode 100644
index 0000000000..45eb0e5921
--- /dev/null
+++ b/railties/lib/rails/rack/static.rb
@@ -0,0 +1,35 @@
+module Rails
+ module Rack
+ class Static
+ FILE_METHODS = %w(GET HEAD).freeze
+
+ def initialize(app)
+ @app = app
+ @file_server = ::Rack::File.new(File.join(RAILS_ROOT, "public"))
+ end
+
+ def call(env)
+ path = env['PATH_INFO'].chomp('/')
+ method = env['REQUEST_METHOD']
+ cached_path = (path.empty? ? 'index' : path) + ::ActionController::Base.page_cache_extension
+
+ if FILE_METHODS.include?(method)
+ if file_exist?(path)
+ return @file_server.call(env)
+ elsif file_exist?(cached_path)
+ env['PATH_INFO'] = cached_path
+ return @file_server.call(env)
+ end
+ end
+
+ @app.call(env)
+ end
+
+ private
+ def file_exist?(path)
+ full_path = File.join(@file_server.root, ::Rack::Utils.unescape(path))
+ File.file?(full_path) && File.readable?(full_path)
+ end
+ end
+ end
+end
diff --git a/railties/lib/rails/version.rb b/railties/lib/rails/version.rb
index fea63beea9..48d24da52e 100644
--- a/railties/lib/rails/version.rb
+++ b/railties/lib/rails/version.rb
@@ -1,8 +1,8 @@
module Rails
module VERSION #:nodoc:
MAJOR = 2
- MINOR = 0
- TINY = 991
+ MINOR = 1
+ TINY = 0
STRING = [MAJOR, MINOR, TINY].join('.')
end
diff --git a/railties/test/gem_dependency_test.rb b/railties/test/gem_dependency_test.rb
index 3ae0189327..b5946aa7b8 100644
--- a/railties/test/gem_dependency_test.rb
+++ b/railties/test/gem_dependency_test.rb
@@ -10,13 +10,13 @@ uses_mocha "Plugin Tests" do
@gem = Rails::GemDependency.new "hpricot"
@gem_with_source = Rails::GemDependency.new "hpricot", :source => "http://code.whytheluckystiff.net"
@gem_with_version = Rails::GemDependency.new "hpricot", :version => "= 0.6"
- @gem_with_lib = Rails::GemDependency.new "aws-s3", :lib => "aws/s3"
+ @gem_with_lib = Rails::GemDependency.new "aws-s3", :lib => "aws/s3"
end
def test_configuration_adds_gem_dependency
config = Rails::Configuration.new
config.gem "aws-s3", :lib => "aws/s3", :version => "0.4.0"
- assert_equal [["install", "aws-s3", "--version", "= 0.4.0"]], config.gems.collect(&:install_command)
+ assert_equal [["install", "aws-s3", "--version", '"= 0.4.0"']], config.gems.collect(&:install_command)
end
def test_gem_creates_install_command
@@ -28,7 +28,7 @@ uses_mocha "Plugin Tests" do
end
def test_gem_with_version_creates_install_command
- assert_equal ["install", "hpricot", "--version", "= 0.6"], @gem_with_version.install_command
+ assert_equal ["install", "hpricot", "--version", '"= 0.6"'], @gem_with_version.install_command
end
def test_gem_creates_unpack_command
@@ -36,26 +36,26 @@ uses_mocha "Plugin Tests" do
end
def test_gem_with_version_unpack_install_command
- assert_equal ["unpack", "hpricot", "--version", "= 0.6"], @gem_with_version.unpack_command
+ assert_equal ["unpack", "hpricot", "--version", '"= 0.6"'], @gem_with_version.unpack_command
end
def test_gem_adds_load_paths
@gem.expects(:gem).with(@gem.name)
@gem.add_load_paths
end
-
+
def test_gem_with_version_adds_load_paths
@gem_with_version.expects(:gem).with(@gem_with_version.name, @gem_with_version.requirement.to_s)
@gem_with_version.add_load_paths
end
-
+
def test_gem_loading
@gem.expects(:gem).with(@gem.name)
@gem.expects(:require).with(@gem.name)
@gem.add_load_paths
@gem.load
end
-
+
def test_gem_with_lib_loading
@gem_with_lib.expects(:gem).with(@gem_with_lib.name)
@gem_with_lib.expects(:require).with(@gem_with_lib.lib)
@@ -63,4 +63,4 @@ uses_mocha "Plugin Tests" do
@gem_with_lib.load
end
end
-end \ No newline at end of file
+end
diff --git a/railties/test/initializer_test.rb b/railties/test/initializer_test.rb
index 0df0164ca6..efce4f292d 100644
--- a/railties/test/initializer_test.rb
+++ b/railties/test/initializer_test.rb
@@ -38,27 +38,28 @@ class Initializer_after_initialize_with_blocks_environment_Test < Test::Unit::Te
end
config.after_initialize do
$test_after_initialize_block2 = "congratulations"
- end
+ end
assert_nil $test_after_initialize_block1
- assert_nil $test_after_initialize_block2
+ assert_nil $test_after_initialize_block2
+ Rails::Initializer.any_instance.expects(:gems_dependencies_loaded).returns(true)
Rails::Initializer.run(:after_initialize, config)
end
-
+
def teardown
$test_after_initialize_block1 = nil
- $test_after_initialize_block2 = nil
+ $test_after_initialize_block2 = nil
end
def test_should_have_called_the_first_after_initialize_block
assert_equal "success", $test_after_initialize_block1
end
-
+
def test_should_have_called_the_second_after_initialize_block
assert_equal "congratulations", $test_after_initialize_block2
end
end
-
+
class Initializer_after_initialize_with_no_block_environment_Test < Test::Unit::TestCase
def setup
@@ -69,15 +70,16 @@ class Initializer_after_initialize_with_no_block_environment_Test < Test::Unit::
config.after_initialize # don't pass a block, this is what we're testing!
config.after_initialize do
$test_after_initialize_block2 = "congratulations"
- end
+ end
assert_nil $test_after_initialize_block1
+ Rails::Initializer.any_instance.expects(:gems_dependencies_loaded).returns(true)
Rails::Initializer.run(:after_initialize, config)
end
def teardown
$test_after_initialize_block1 = nil
- $test_after_initialize_block2 = nil
+ $test_after_initialize_block2 = nil
end
def test_should_have_called_the_first_after_initialize_block
@@ -95,7 +97,7 @@ uses_mocha 'framework paths' do
def setup
@config = Rails::Configuration.new
@config.frameworks.clear
-
+
File.stubs(:directory?).returns(true)
@config.stubs(:framework_root_path).returns('')
end
@@ -112,7 +114,7 @@ uses_mocha 'framework paths' do
def test_actioncontroller_or_actionview_add_actionpack
@config.frameworks << :action_controller
assert_framework_path '/actionpack/lib'
-
+
@config.frameworks = [:action_view]
assert_framework_path '/actionpack/lib'
end
@@ -204,22 +206,22 @@ uses_mocha "Initializer plugin loading tests" do
load_plugins!
end
end
-
+
def test_should_ensure_all_loaded_plugins_load_paths_are_added_to_the_load_path
only_load_the_following_plugins! [:stubby, :acts_as_chunky_bacon]
@initializer.add_plugin_load_paths
-
+
assert $LOAD_PATH.include?(File.join(plugin_fixture_path('default/stubby'), 'lib'))
assert $LOAD_PATH.include?(File.join(plugin_fixture_path('default/acts/acts_as_chunky_bacon'), 'lib'))
end
-
+
private
-
+
def load_plugins!
@initializer.add_plugin_load_paths
@initializer.load_plugins
end
end
-
-end
+
+end