My favorites | Sign in
Logo
          
New issue | Search
for
| Advanced search | Search tips
Issue 305: acts_as_versioned should not break app when it has no tables
2 people starred this issue and may be notified of changes. Back to list
Status:  Fixed
Owner:  igal.koshevoy
Closed:  Nov 05
Cc:  reidab
Type-Defect
Priority-Critical
Component-environment


Sign in to add a comment
 
Reported by igal.koshevoy, Oct 24, 2008
What steps will reproduce the problem?
1. rake db:drop
2. rake db:migrate
3. Get error about "Could not find table 'events'", which is caused when
the code hits the "acts_as_versioned" code in Events.

What is the expected output? What do you see instead?
Tasks like db:migrate must run. The "acts_as_versioned" call shouldn't be
doing anything that requires the presence of the underlying table, or
should defer actions until one is available. Ugh.
Comment 1 by igal.koshevoy, Oct 24, 2008
I've fixed the bugs causing these. See Issue 306 for further details.
Status: Fixed
Owner: igal.koshevoy
Comment 2 by comisarulmoldovan, Apr 16, 2009
I just checked out today the code from git://github.com/calagator/calagator.git and I
encountering this problem.

$ rake db:migrate
(in /home/costi/workspace/calagator)
rake aborted!
Could not find table 'events'

(See full trace by running task with --trace)


The script creates development.sqlite3, but there aren't any tables in it.
sqlite> .schema
sqlite> .tables

Full trace:
costi@costi-personal:~/workspace/calagator$ rake db:migrate --trace
(in /home/costi/workspace/calagator)
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
rake aborted!
Could not find table 'events'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/connection_adapters/sqlite3_adapter.rb:29:in
`table_structure'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/core_ext/object/misc.rb:28:in
`returning'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/connection_adapters/sqlite3_adapter.rb:28:in
`table_structure'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/connection_adapters/sqlite_adapter.rb:189:in
`columns'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/base.rb:1149:in
`columns'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/base.rb:2616:in
`attributes_from_column_definition_without_lock'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/locking/optimistic.rb:55:in
`attributes_from_column_definition'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/base.rb:2137:in
`initialize'
/home/costi/workspace/calagator/app/models/event.rb:91:in `new'
/home/costi/workspace/calagator/app/models/event.rb:91
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:216:in
`load_without_new_constant_marking'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:216:in
`load_file'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:355:in
`new_constants_in'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:215:in
`load_file'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:96:in
`require_or_load'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:261:in
`load_missing_constant'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:468:in
`const_missing'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:480:in
`const_missing'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/inflector.rb:285:in `constantize'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/inflector.rb:284:in `each'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/inflector.rb:284:in `constantize'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/core_ext/string/inflections.rb:143:in
`constantize'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/observer.rb:149:in
`observe'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/observer.rb:149:in
`collect!'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/observer.rb:149:in
`observe'
/home/costi/workspace/calagator/app/observers/cache_observer.rb:5
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:216:in
`load_without_new_constant_marking'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:216:in
`load_file'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:355:in
`new_constants_in'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:215:in
`load_file'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:96:in
`require_or_load'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:261:in
`load_missing_constant'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:468:in
`const_missing'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:480:in
`const_missing'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/inflector.rb:285:in `constantize'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/inflector.rb:284:in `each'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/inflector.rb:284:in `constantize'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/core_ext/string/inflections.rb:143:in
`constantize'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/observer.rb:38:in
`instantiate_observers'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/observer.rb:36:in `each'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/observer.rb:36:in
`instantiate_observers'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:26:in `define_dispatcher_callbacks'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/callbacks.rb:177:in `call'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/callbacks.rb:177:in `evaluate_method'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/callbacks.rb:161:in `call'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/callbacks.rb:90:in
`run'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/callbacks.rb:90:in
`each'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/callbacks.rb:90:in
`send'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/callbacks.rb:90:in
`run'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/callbacks.rb:272:in `run_callbacks'
/usr/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/initializer.rb:493:in `send'
/usr/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/initializer.rb:493:in `prepare_dispatcher'
/usr/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/initializer.rb:155:in `process'
/usr/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/initializer.rb:97:in `send'
/usr/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/initializer.rb:97:in `run'
/home/costi/workspace/calagator/config/environment.rb:13
/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:510:in
`require'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:355:in
`new_constants_in'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:510:in
`require'
/usr/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/tasks/misc.rake:3
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:617:in `call'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:617:in `execute'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:612:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:612:in `execute'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:578: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.4/lib/rake.rb:571:in `invoke_with_call_chain'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:588:in `invoke_prerequisites'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:585:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:585:in `invoke_prerequisites'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:577: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.4/lib/rake.rb:571:in `invoke_with_call_chain'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:564:in `invoke'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:2027:in `invoke_task'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:2005:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:2005:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:2005:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:2044:in `standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:1999:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:1977:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:2044:in `standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:1974:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/bin/rake:31
/usr/bin/rake:19:in `load'
/usr/bin/rake:19

Comment 3 by igal.koshevoy, Apr 18, 2009
Thank you for the excellent bug report. A recent change to the Event time setters has
unfortunately caused migrations to break again.

I've committed a workaround that should make "rake db:migrate" work again if you're
calling it on a new database without the "events" table.

Status: Started
Cc: reidab
Comment 4 by igal.koshevoy, Nov 05, 2009
Closing this ticket because the problem has been resolved and acts_as_versioned has
been replaced with paper_trail.
Status: Fixed
Sign in to add a comment

Hosted by Google Code