From 3632fa9779a3dc11a3d69b626ac40a169dd9d1f4 Mon Sep 17 00:00:00 2001 From: Diego Carrion Date: Tue, 1 Sep 2009 16:45:52 -0300 Subject: [PATCH] added a default generator for active model to be used in scaffolds, so libraries that implement active model dont worry about how the controller calls the model --- railties/lib/generators/active_model.rb | 18 ++++++---- railties/lib/generators/active_record.rb | 34 -------------------- railties/lib/generators/resource_helpers.rb | 13 ++++--- .../scaffold_controller_generator_test.rb | 5 +-- 4 files changed, 20 insertions(+), 50 deletions(-) diff --git a/railties/lib/generators/active_model.rb b/railties/lib/generators/active_model.rb index 1a849a0..fe6321a 100644 --- a/railties/lib/generators/active_model.rb +++ b/railties/lib/generators/active_model.rb @@ -32,7 +32,7 @@ module Rails # GET index def self.all(klass) - raise NotImplementedError + "#{klass}.all" end # GET show @@ -40,34 +40,38 @@ module Rails # PUT update # DELETE destroy def self.find(klass, params=nil) - raise NotImplementedError + "#{klass}.find(#{params})" end # GET new # POST create def self.build(klass, params=nil) - raise NotImplementedError + if params + "#{klass}.new(#{params})" + else + "#{klass}.new" + end end # POST create def save - raise NotImplementedError + "#{name}.save" end # PUT update def update_attributes(params=nil) - raise NotImplementedError + "#{name}.update_attributes(#{params})" end # POST create # PUT update def errors - raise NotImplementedError + "#{name}.errors" end # DELETE destroy def destroy - raise NotImplementedError + "#{name}.destroy" end end end diff --git a/railties/lib/generators/active_record.rb b/railties/lib/generators/active_record.rb index ff3093f..e93c60d 100644 --- a/railties/lib/generators/active_record.rb +++ b/railties/lib/generators/active_record.rb @@ -18,39 +18,5 @@ module ActiveRecord end end end - - class ActiveModel < Rails::Generators::ActiveModel #:nodoc: - def self.all(klass) - "#{klass}.all" - end - - def self.find(klass, params=nil) - "#{klass}.find(#{params})" - end - - def self.build(klass, params=nil) - if params - "#{klass}.new(#{params})" - else - "#{klass}.new" - end - end - - def save - "#{name}.save" - end - - def update_attributes(params=nil) - "#{name}.update_attributes(#{params})" - end - - def errors - "#{name}.errors" - end - - def destroy - "#{name}.destroy" - end - end end end diff --git a/railties/lib/generators/resource_helpers.rb b/railties/lib/generators/resource_helpers.rb index ba14446..695feb8 100644 --- a/railties/lib/generators/resource_helpers.rb +++ b/railties/lib/generators/resource_helpers.rb @@ -54,13 +54,14 @@ module Rails begin klass = active_model.constantize rescue NameError - require "generators/#{options[:orm]}" - end + begin + require "generators/#{options[:orm]}" + rescue Exception + end - # Try once again after loading the file with success. - klass ||= active_model.constantize - rescue Exception => e - raise Error, "Could not load #{active_model}, skipping controller. Error: #{e.message}." + # Try once again after loading the file with success or use the default generator. + klass = active_model.constantize rescue Rails::Generators::ActiveModel + end end end diff --git a/railties/test/generators/scaffold_controller_generator_test.rb b/railties/test/generators/scaffold_controller_generator_test.rb index 834e43e..bd683e3 100644 --- a/railties/test/generators/scaffold_controller_generator_test.rb +++ b/railties/test/generators/scaffold_controller_generator_test.rb @@ -97,10 +97,9 @@ class ScaffoldControllerGeneratorTest < GeneratorsTestCase assert_no_file "app/views/layouts/users.html.erb" end - def test_error_is_shown_if_orm_does_not_provide_interface + def test_error_is_not_shown_if_orm_does_not_provide_interface error = capture(:stderr){ run_generator ["User", "--orm=unknown"] } - assert_equal "Could not load Unknown::Generators::ActiveModel, skipping controller. " << - "Error: no such file to load -- generators/unknown.\n", error + assert_equal "", error end protected -- 1.5.5.3