summaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2008-07-04 17:58:14 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2008-07-04 17:58:14 +0000
commit7cdd88a6ce3632c801223b33e5ccc2b9fc13651e (patch)
treea270478d7d7626ac9970d69e32cac6c6807e6cf4 /config
parent22558f77094dce4d489dac410abd7b74e48cdcb0 (diff)
downloadredmine-7cdd88a6ce3632c801223b33e5ccc2b9fc13651e.tar.gz
redmine-7cdd88a6ce3632c801223b33e5ccc2b9fc13651e.zip
Merged Rails 2.1 compatibility branch.
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1623 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'config')
-rw-r--r--config/boot.rb118
-rw-r--r--config/environment.rb31
-rw-r--r--config/initializers/10-patches.rb17
-rw-r--r--config/initializers/20-mime_types.rb4
-rw-r--r--config/initializers/30-redmine.rb7
5 files changed, 133 insertions, 44 deletions
diff --git a/config/boot.rb b/config/boot.rb
index 9fcd50fe3..cd21fb9ea 100644
--- a/config/boot.rb
+++ b/config/boot.rb
@@ -1,19 +1,109 @@
-# Don't change this file. Configuration is done in config/environment.rb and config/environments/*.rb
+# Don't change this file!
+# Configure your app in config/environment.rb and config/environments/*.rb
-unless defined?(RAILS_ROOT)
- root_path = File.join(File.dirname(__FILE__), '..')
- unless RUBY_PLATFORM =~ /mswin32/
- require 'pathname'
- root_path = Pathname.new(root_path).cleanpath(true).to_s
+RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT)
+
+module Rails
+ class << self
+ def boot!
+ unless booted?
+ preinitialize
+ pick_boot.run
+ end
+ end
+
+ def booted?
+ defined? Rails::Initializer
+ end
+
+ def pick_boot
+ (vendor_rails? ? VendorBoot : GemBoot).new
+ end
+
+ def vendor_rails?
+ File.exist?("#{RAILS_ROOT}/vendor/rails")
+ end
+
+ def preinitialize
+ load(preinitializer_path) if File.exist?(preinitializer_path)
+ end
+
+ def preinitializer_path
+ "#{RAILS_ROOT}/config/preinitializer.rb"
+ end
end
- RAILS_ROOT = root_path
-end
-if File.directory?("#{RAILS_ROOT}/vendor/rails")
- require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer"
-else
- require 'rubygems'
- require 'initializer'
+ class Boot
+ def run
+ load_initializer
+ Rails::Initializer.run(:set_load_path)
+ end
+ end
+
+ class VendorBoot < Boot
+ def load_initializer
+ require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer"
+ Rails::Initializer.run(:install_gem_spec_stubs)
+ end
+ end
+
+ class GemBoot < Boot
+ def load_initializer
+ self.class.load_rubygems
+ load_rails_gem
+ require 'initializer'
+ end
+
+ def load_rails_gem
+ if version = self.class.gem_version
+ gem 'rails', version
+ else
+ gem 'rails'
+ end
+ rescue Gem::LoadError => load_error
+ $stderr.puts %(Missing the Rails #{version} gem. Please `gem install -v=#{version} rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.)
+ exit 1
+ end
+
+ class << self
+ def rubygems_version
+ Gem::RubyGemsVersion if defined? Gem::RubyGemsVersion
+ end
+
+ def gem_version
+ if defined? RAILS_GEM_VERSION
+ RAILS_GEM_VERSION
+ elsif ENV.include?('RAILS_GEM_VERSION')
+ ENV['RAILS_GEM_VERSION']
+ else
+ parse_gem_version(read_environment_rb)
+ end
+ end
+
+ def load_rubygems
+ require 'rubygems'
+
+ unless rubygems_version >= '0.9.4'
+ $stderr.puts %(Rails requires RubyGems >= 0.9.4 (you have #{rubygems_version}). Please `gem update --system` and try again.)
+ exit 1
+ end
+
+ rescue LoadError
+ $stderr.puts %(Rails requires RubyGems >= 0.9.4. Please install RubyGems and try again: http://rubygems.rubyforge.org)
+ exit 1
+ end
+
+ def parse_gem_version(text)
+ $1 if text =~ /^[^#]*RAILS_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/
+ end
+
+ private
+ def read_environment_rb
+ File.read("#{RAILS_ROOT}/config/environment.rb")
+ end
+ end
+ end
end
-Rails::Initializer.run(:set_load_path)
+# All that for this:
+Rails.boot!
diff --git a/config/environment.rb b/config/environment.rb
index f09c1009a..b0f16c3e1 100644
--- a/config/environment.rb
+++ b/config/environment.rb
@@ -5,7 +5,7 @@
# ENV['RAILS_ENV'] ||= 'production'
# Specifies gem version of Rails to use when vendor/rails is not present
-RAILS_GEM_VERSION = '2.0.2' unless defined? RAILS_GEM_VERSION
+RAILS_GEM_VERSION = '2.1.0' unless defined? RAILS_GEM_VERSION
# Bootstrap the Rails environment, frameworks, and default configuration
require File.join(File.dirname(__FILE__), 'boot')
@@ -71,32 +71,3 @@ Rails::Initializer.run do |config|
config.action_mailer.delivery_method = :smtp
end
-
-ActiveRecord::Errors.default_error_messages = {
- :inclusion => "activerecord_error_inclusion",
- :exclusion => "activerecord_error_exclusion",
- :invalid => "activerecord_error_invalid",
- :confirmation => "activerecord_error_confirmation",
- :accepted => "activerecord_error_accepted",
- :empty => "activerecord_error_empty",
- :blank => "activerecord_error_blank",
- :too_long => "activerecord_error_too_long",
- :too_short => "activerecord_error_too_short",
- :wrong_length => "activerecord_error_wrong_length",
- :taken => "activerecord_error_taken",
- :not_a_number => "activerecord_error_not_a_number"
-}
-
-ActionView::Base.field_error_proc = Proc.new{ |html_tag, instance| "#{html_tag}" }
-
-Mime::SET << Mime::CSV unless Mime::SET.include?(Mime::CSV)
-Mime::Type.register 'application/pdf', :pdf
-
-GLoc.set_config :default_language => :en
-GLoc.clear_strings
-GLoc.set_kcode
-GLoc.load_localized_strings
-GLoc.set_config(:raise_string_not_found_errors => false)
-
-require 'redmine'
-
diff --git a/config/initializers/10-patches.rb b/config/initializers/10-patches.rb
new file mode 100644
index 000000000..fcc091997
--- /dev/null
+++ b/config/initializers/10-patches.rb
@@ -0,0 +1,17 @@
+
+ActiveRecord::Errors.default_error_messages = {
+ :inclusion => "activerecord_error_inclusion",
+ :exclusion => "activerecord_error_exclusion",
+ :invalid => "activerecord_error_invalid",
+ :confirmation => "activerecord_error_confirmation",
+ :accepted => "activerecord_error_accepted",
+ :empty => "activerecord_error_empty",
+ :blank => "activerecord_error_blank",
+ :too_long => "activerecord_error_too_long",
+ :too_short => "activerecord_error_too_short",
+ :wrong_length => "activerecord_error_wrong_length",
+ :taken => "activerecord_error_taken",
+ :not_a_number => "activerecord_error_not_a_number"
+}
+
+ActionView::Base.field_error_proc = Proc.new{ |html_tag, instance| "#{html_tag}" }
diff --git a/config/initializers/20-mime_types.rb b/config/initializers/20-mime_types.rb
new file mode 100644
index 000000000..269742b16
--- /dev/null
+++ b/config/initializers/20-mime_types.rb
@@ -0,0 +1,4 @@
+# Add new mime types for use in respond_to blocks:
+
+Mime::SET << Mime::CSV unless Mime::SET.include?(Mime::CSV)
+Mime::Type.register 'application/pdf', :pdf
diff --git a/config/initializers/30-redmine.rb b/config/initializers/30-redmine.rb
new file mode 100644
index 000000000..f2a9f6a30
--- /dev/null
+++ b/config/initializers/30-redmine.rb
@@ -0,0 +1,7 @@
+GLoc.set_config :default_language => :en
+GLoc.clear_strings
+GLoc.set_kcode
+GLoc.load_localized_strings
+GLoc.set_config(:raise_string_not_found_errors => false)
+
+require 'redmine'