Upgraded to Rails 2.3.4 (#3597)

* Ran the Rails upgrade
* Upgraded to Rails Engines 2.3.2
* Added a plugin to let Engines override application views.
* Converted tests to use the new classes:
** ActionController::TestCase for functional
** ActiveSupport::TestCase for units
* Converted ActiveRecord::Error message to a string.
* ActiveRecord grouping returns an ordered hash which doesn't have #sort!
* Updated the I18n storage_units format.
* Added some default initializers from a fresh rails app
* Changed the order of check_box_tags and hidden_field_tags.  The hidden tag
  needs to appear first in Rails 2.3, otherwise it will override any value in
  the check_box_tag.
* Removed the custom handler for when the cookie store is tampered with.
  Rails 2.3 removed the TamperedWithCookie exception and instead Rails will not
  load the data from it when it's been tampered with (e.g. no user login).
* Fixed mail layouts, 2.3 has problems with implicit multipart emails that
  use layouts.  Also removed some custom Redmine mailer code.
* Fixed a bug that occurred in tests where the "required" span tag would be
  added to the :field_status translation.  This resulted in an email string of:

    <li>Status<span class="required"> *</span><span class="required"> *</span>

  Instead of:

    <li>Status: New</li>

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2887 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Eric Davis
2009-09-13 17:14:35 +00:00
parent fb349dc4ab
commit 7b0cb6aba8
263 changed files with 1636 additions and 440 deletions
@@ -0,0 +1,8 @@
class AlphaPluginController < ApplicationController
def an_action
render_class_and_action
end
def action_with_layout
render_class_and_action(nil, :layout => "plugin_layout")
end
end
@@ -0,0 +1,5 @@
class AppAndPluginController < ApplicationController
def an_action
render_class_and_action 'from alpha_plugin'
end
end
@@ -0,0 +1,5 @@
class Namespace::AlphaPluginController < ApplicationController
def an_action
render_class_and_action
end
end
@@ -0,0 +1,5 @@
class Namespace::AppAndPluginController < ApplicationController
def an_action
render_class_and_action 'from alpha_plugin'
end
end
@@ -0,0 +1,5 @@
class Namespace::SharedPluginController < ApplicationController
def an_action
render_class_and_action 'from alpha_plugin'
end
end
@@ -0,0 +1,5 @@
class SharedEngineController < ApplicationController
def an_action
render_class_and_action 'from alpha_engine'
end
end
@@ -0,0 +1,3 @@
class AlphaPluginModel < ActiveRecord::Base
def self.report_location; TestHelper::report_location(__FILE__); end
end
@@ -0,0 +1,7 @@
class AppAndPluginModel < ActiveRecord::Base
def self.report_location; TestHelper::report_location(__FILE__); end
def defined_only_in_alpha_plugin_version
# should not be defined as the model in app/models takes precedence
end
end
@@ -0,0 +1,3 @@
class SharedPluginModel < ActiveRecord::Base
def self.report_location; TestHelper::report_location(__FILE__); end
end
@@ -0,0 +1 @@
<%= TestHelper.view_path_for __FILE__ %>
@@ -0,0 +1 @@
<%= TestHelper.view_path_for __FILE__ %> (from a_view)
@@ -0,0 +1 @@
<%= yield %> (with plugin layout)
@@ -0,0 +1 @@
<%= TestHelper.view_path_for __FILE__ %>
@@ -0,0 +1 @@
<%= TestHelper.view_path_for __FILE__ %>
@@ -0,0 +1 @@
<%= TestHelper.view_path_for __FILE__ %> (from alpha_plugin)
@@ -0,0 +1 @@
<%= TestHelper.view_path_for __FILE__ %> (from alpha_plugin)
@@ -0,0 +1,3 @@
class AlphaPluginLibModel < ActiveRecord::Base
def self.report_location; TestHelper::report_location(__FILE__); end
end
@@ -0,0 +1,7 @@
class AppAndPluginLibModel < ActiveRecord::Base
def self.report_location; TestHelper::report_location(__FILE__); end
def defined_only_in_alpha_plugin_version
# should not be defined
end
end
@@ -0,0 +1,3 @@
en:
hello: "Hello from alfa"
plugin: "alfa"
@@ -0,0 +1,5 @@
class AppAndPluginController < ApplicationController
def an_action
render_class_and_action 'from beta_plugin'
end
end
@@ -0,0 +1,5 @@
class Namespace::SharedPluginController < ApplicationController
def an_action
render_class_and_action 'from beta_plugin'
end
end
@@ -0,0 +1,5 @@
class SharedPluginController < ApplicationController
def an_action
render_class_and_action 'from beta_plugin'
end
end
@@ -0,0 +1,3 @@
class SharedPluginModel < ActiveRecord::Base
def self.report_location; TestHelper::report_location(__FILE__); end
end
@@ -0,0 +1 @@
<%= TestHelper.view_path_for __FILE__ %> (from beta_plugin)
@@ -0,0 +1 @@
<%= TestHelper.view_path_for __FILE__ %> (from beta_plugin)
@@ -0,0 +1 @@
# just here so that Rails recognizes this as a plugin
@@ -0,0 +1,3 @@
en:
hello: "Hello from beta"
plugin: "beta"
@@ -0,0 +1,2 @@
class AssetsController < ApplicationController
end
@@ -0,0 +1,4 @@
<%= image_tag 'image.png', :plugin => 'test_assets' %>
<%= javascript_include_tag 'file.1.js', 'file2', :plugin => "test_assets" %>
<%= stylesheet_link_tag 'file.1.css', 'file2', :plugin => "test_assets" %>
<%= image_submit_tag 'image.png', :plugin => "test_assets" %>
@@ -0,0 +1,3 @@
<div id="assets_layout">
<%= yield %>
</div>
@@ -0,0 +1,3 @@
class Thing
def self.from_plugin; TestHelper::report_location(__FILE__); end
end
@@ -0,0 +1 @@
# just here so that Rails recognizes this as a plugin
@@ -0,0 +1,11 @@
class CreateTests < ActiveRecord::Migration
def self.up
create_table 'tests' do |t|
t.column 'name', :string
end
end
def self.down
drop_table 'tests'
end
end
@@ -0,0 +1,11 @@
class CreateOthers < ActiveRecord::Migration
def self.up
create_table 'others' do |t|
t.column 'name', :string
end
end
def self.down
drop_table 'others'
end
end
@@ -0,0 +1,11 @@
class CreateExtras < ActiveRecord::Migration
def self.up
create_table 'extras' do |t|
t.column 'name', :string
end
end
def self.down
drop_table 'extras'
end
end
@@ -0,0 +1,26 @@
class PluginMail < ActionMailer::Base
def mail_from_plugin(note=nil)
body(:note => note)
end
def mail_from_plugin_with_application_template(note=nil)
body(:note => note)
end
def multipart_from_plugin
content_type 'multipart/alternative'
part :content_type => "text/html", :body => render_message("multipart_from_plugin_html", {})
part "text/plain" do |p|
p.body = render_message("multipart_from_plugin_plain", {})
end
end
def multipart_from_plugin_with_application_template
content_type 'multipart/alternative'
part :content_type => "text/html", :body => render_message("multipart_from_plugin_with_application_template_html", {})
part "text/plain" do |p|
p.body = render_message("multipart_from_plugin_with_application_template_plain", {})
end
end
end
@@ -0,0 +1,5 @@
class Namespace::TestRoutingController < ApplicationController
def routed_action
render_class_and_action
end
end
@@ -0,0 +1,9 @@
class TestRoutingController < ApplicationController
def routed_action
render_class_and_action
end
def test_named_routes_from_plugin
render :text => plugin_route_path(:action => "index")
end
end
@@ -0,0 +1,4 @@
ActionController::Routing::Routes.draw do |map|
map.connect 'routes/:action', :controller => "test_routing"
map.plugin_route 'somespace/routes/:action', :controller => "namespace/test_routing"
end
@@ -0,0 +1 @@
Fixtures are only copied from plugins with an +app+ directory, but git needs this directory to be non-empty
@@ -0,0 +1,13 @@
require File.expand_path(File.join(File.dirname(__FILE__), *%w[.. .. .. .. .. test test_helper]))
class OverrideTest < ActiveSupport::TestCase
def test_overrides_from_the_application_should_work
flunk "this test should be overridden by the app"
end
def test_tests_within_the_plugin_should_still_run
assert true, "non-overridden plugin tests should still run"
end
end
Engines::Testing.override_tests_from_app