2010-09-21 63 views
1

我只是想運行一個遷移,但我得到以下stacktrace(下)。rake db:migrate(+ desert)正在給出「未定義的方法`abstract_class?'對象:類「

我使用rails 2.3.8和沙漠0.5.4。

rake aborted! 
undefined method `abstract_class?' for Object:Class 
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:2242:in `class_of_active_record_descendant' 
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:1492:in `base_class' 
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:1164:in `reset_table_name' 
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:1160:in `table_name' 
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:3154:in `quoted_table_name' 
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:2261:in `sanitize_sql' 
/usr/lib/ruby/gems/1.8/gems/desert-0.5.4/lib/desert/plugin_migrations/2.1/extensions/schema_statements.rb:24:in `send' 
/usr/lib/ruby/gems/1.8/gems/desert-0.5.4/lib/desert/plugin_migrations/2.1/extensions/schema_statements.rb:24:in `initialize_schema_migrations_table' 
/usr/lib/ruby/gems/1.8/gems/desert-0.5.4/lib/desert/plugin_migrations/2.1/extensions/schema_statements.rb:23:in `each' 
/usr/lib/ruby/gems/1.8/gems/desert-0.5.4/lib/desert/plugin_migrations/2.1/extensions/schema_statements.rb:23:in `initialize_schema_migrations_table' 
/usr/lib/ruby/gems/1.8/gems/desert-0.5.4/lib/desert/plugin_migrations/2.1/extensions/schema_statements.rb:12:in `each' 
/usr/lib/ruby/gems/1.8/gems/desert-0.5.4/lib/desert/plugin_migrations/2.1/extensions/schema_statements.rb:12:in `initialize_schema_migrations_table' 
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/migration.rb:441:in `initialize' 
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/migration.rb:401:in `new' 
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/migration.rb:401:in `up' 
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/migration.rb:383:in `migrate' 
/usr/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/tasks/databases.rake:112 
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `call' 
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `execute' 
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `each' 
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `execute' 
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:597:in `invoke_with_call_chain' 
/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize' 
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain' 
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:583:in `invoke' 
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_task' 
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level' 
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `each' 
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level' 
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling' 
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2023:in `top_level' 
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2001:in `run' 
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling' 
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:1998:in `run' 
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/bin/rake:31 
/usr/bin/rake:19:in `load' 
/usr/bin/rake:19 

的錯誤似乎是在沙漠的寶石上以下行:

/usr/lib/ruby/gems/1.8/gems/desert-0.5.4/lib/desert/plugin_migrations/2.1/extensions/schema_statements.rb:24 

其結果是:

insert_sql = ActiveRecord::Base.send(:sanitize_sql, [ "INSERT INTO... 

固定任何想法?

回答

0

我有一個黑客工具,圍繞它得到,但它的醜陋:

class Object 
    # ActiveRecord::Base *is* an abstract class. 
    unless defined?(abstract_class?) 
    def abstract_class? 
     true 
    end 
    end 
end 
相關問題