Hello,
I have trouble with migration files. Every time when I try create a
record by migration file I have error: "Rake aborted! stack level too
deep"
(look bellow to see content of my migration file and my rails
environment)
This error is very tricky, I do hot sure but sounds like this error
happen
when ruby could not find a method
I found that problem at the two places. One is:
''paginating find'' plugin
http://cardboardrocket.com/pages/paginating_find
and second is:
''userstamp'' plugin
http://www.delynnberry.com/articles/category/userstamp/
There is code at the paginating find:
def self.included(base)
base.extend(ClassMethods)
base.class_eval do
class << self
alias_method_chain :find, :pagination
end
end
end
.....
def find_with_pagination(*args)
options = extract_options_from_args!(args)
.....
.....
.....
# The :page option was not specified, so invoke the
# usual AR::Base#find method
find_without_pagination(*(args << options))
end
end
I can see at the log that error happen after when was executed
-> body of find_with_pagination
-> call find_without_pagination(*(args << options))
-> body of find_with_pagination
-> options = extract_options_from_args!(args)
As I can understand the ''find_without_pagination'' method call
executes ''find_with_pagination'' instead.
Sounds like alias_method_chain :find, :pagination does not work with
rake
(that is strange, should not be like that).
I fixed the trouble but solution was not great. I have replaced:
alias_method_chain :find, :pagination
By:
alias_method :pagination_find, :find_with_pagination
alias_method :find_without_pagination, :find
And all places where I need a pagination find I use ''pagination_find
method''
and use just ''find'' at other cases
Other place which makes error is a userstamp plugin
And here the same trouble
alias_method :create_without_user, :create
alias_method :create, :create_with_user
alias_method :update_without_user, :update
alias_method :update, :update_with_user
def create_with_user
if record_userstamps and user_model.current_user != nil
write_attribute(:created_by, user_model.current_user.id.to_i) if
respond_to?(:created_by) and self.created_by.nil?
write_attribute(:updated_by, user_model.current_user.id.to_i) if
respond_to?(:updated_by)
end
create_without_user
end
class Base
@@user_model_name = :users
cattr_accessor :user_model_name
@@record_userstamps = true
cattr_accessor :record_userstamps
def self.relates_to_user_in(model)
self.user_model_name = model
end
def user_model
Object.const_get(self.user_model_name.to_s.singularize.humanize)
end
end
When user_model is
Object.const_get(self.user_model_name.to_s.singularize.humanize)
It has error at the singularize (look at reports bellow)
When I changed code of user_model to just return User the error at the
method create_with_user when it try call create_without_user
Sounds like it can''t find create_without_user method. At result there
is same trouble with alias_method and migration as abowe
And last point. The troubles only with rake and no troubles
when application works as web server.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
My migration file
class CreateDefUsers < ActiveRecord::Migration
def self.up
User.create( { :id => 1,
:login => ''root'', :password => "root",
:password_confirmation=>"root",
:email=>"email-zuv13RyHHZkAvxtiuMwx3w@public.gmane.org",
:role =>:root, :company_id=>1 } )
end
def self.down
end
end
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error message when:
def user_model
User
end
== CreateDefUsers: migrating
=================================================rake aborted!
stack level too deep
D:/AppFrameWork/RAdmin/config/../vendor/plugins/userstamp/lib/userstamp.rb:32:in
`create_without_user''
D:/AppFrameWork/RAdmin/config/../vendor/plugins/userstamp/lib/userstamp.rb:36:in
`create''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/base.rb:1789:in
`create_or_update_wit
hout_callbacks''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/callbacks.rb:242:in
`create_or_update
''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/base.rb:1545:in
`save_without_validat
ion''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/validations.rb:752:in
`save_without_t
ransactions''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/transactions.rb:129:in
`save''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/connection_adapters/abstract/database
_statements.rb:59:in `transaction''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/transactions.rb:95:in
`transaction''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/transactions.rb:121:in
`transaction''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/transactions.rb:129:in
`save''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/base.rb:451:in
`create''
./db/migrate//014_create_def_users.rb:3:in `real_up''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/migration.rb:212:in
`send''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/migration.rb:212:in
`migrate''
C:/ruby/lib/ruby/1.8/benchmark.rb:293:in `measure''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/migration.rb:212:in
`migrate''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/migration.rb:335:in
`migrate''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/migration.rb:330:in
`each''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/migration.rb:330:in
`migrate''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/migration.rb:297:in
`up''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/migration.rb:288:in
`migrate''
C:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/tasks/databases.rake:4
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:392:in `call''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:392:in `execute''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:392:in `each''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:392:in `execute''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:362:in `invoke''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:355:in
`synchronize''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:355:in `invoke''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1739:in
`top_level''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1739:in `each''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1739:in
`top_level''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1761:in
`standard_exception_handling''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1733:in
`top_level''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1711:in `run''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1761:in
`standard_exception_handling''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1708:in `run''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/bin/rake:7
C:/ruby/bin/rake.bat:20:in `load''
C:/ruby/bin/rake.bat:20
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error message when:
def user_model
Object.const_get(self.user_model_name.to_s.singularize.humanize)
end
== CreateDefUsers: migrating
=================================================rake aborted!
stack level too deep
C:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/inflector.rb:120:in
`singularize''
C:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/core_ext/string/inflections.rb:33:in
`singularize''
D:/AppFrameWork/RAdmin/config/../vendor/plugins/userstamp/lib/userstamp.rb:65:in
`user_model''
D:/AppFrameWork/RAdmin/config/../vendor/plugins/userstamp/lib/userstamp.rb:32:in
`create_without_user''
D:/AppFrameWork/RAdmin/config/../vendor/plugins/userstamp/lib/userstamp.rb:36:in
`create''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/base.rb:1789:in
`create_or_update_wit
hout_callbacks''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/callbacks.rb:242:in
`create_or_update
''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/base.rb:1545:in
`save_without_validat
ion''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/validations.rb:752:in
`save_without_t
ransactions''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/transactions.rb:129:in
`save''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/connection_adapters/abstract/database
_statements.rb:59:in `transaction''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/transactions.rb:95:in
`transaction''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/transactions.rb:121:in
`transaction''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/transactions.rb:129:in
`save''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/base.rb:451:in
`create''
./db/migrate//014_create_def_users.rb:3:in `real_up''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/migration.rb:212:in
`send''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/migration.rb:212:in
`migrate''
C:/ruby/lib/ruby/1.8/benchmark.rb:293:in `measure''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/migration.rb:212:in
`migrate''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/migration.rb:335:in
`migrate''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/migration.rb:330:in
`each''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/migration.rb:330:in
`migrate''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/migration.rb:297:in
`up''
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/migration.rb:288:in
`migrate''
C:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/tasks/databases.rake:4
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:392:in `call''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:392:in `execute''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:392:in `each''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:392:in `execute''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:362:in `invoke''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:355:in
`synchronize''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:355:in `invoke''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1739:in
`top_level''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1739:in `each''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1739:in
`top_level''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1761:in
`standard_exception_handling''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1733:in
`top_level''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1711:in `run''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1761:in
`standard_exception_handling''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1708:in `run''
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/bin/rake:7
C:/ruby/bin/rake.bat:20:in `load''
C:/ruby/bin/rake.bat:20
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
My Rails Enviroment
Windows XP SP2
ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]
rails-1.2.3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
Posted via http://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---