Hi,
I'm using an sqlite3 database with Rails and have some trouble running unit tests
What I've done is * rails my_app * edited database.yml to use sqlite3 adapter, db/my_app_development and db/my_app_test * ruby script\generate model user * edited model
class User < ActiveRecord::Base validates_presence_of :name validates_uniqueness_of :name end
* edited db/migrate/001_create_users.rb migration:
def self.up create_table :users do |t| t.column :name, :string, :null => false end User.create(:name => 'administrator') end
* and:
def self.down drop_table :users end
* rake db:migrate * rake db:test:prepare
At this point, the 2 DBs are created correctly.
* rake test:units
The problem is that, but when I want to run a (any) test, I get a "SQL logic error or missing database (SQLite3::SQLException). I can however access the DB via the sqlite3 client/rails console without any problem.
Here's the exact error message I get:
Loaded suite C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/ lib/rake/rake_test_loader Started EC:/InstantRails/ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.1- mswin32/lib/sqlite3/errors.rb:94:in `check': SQL logic error or missing database (SQLite3::SQLException) from C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/sqlite3- ruby-1.2.1-mswin32/lib/sqlite3/resultset.rb:76:in `check' from C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/sqlite3- ruby-1.2.1-mswin32/lib/sqlite3/resultset.rb:68:in `commence' from C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/sqlite3- ruby-1.2.1-mswin32/lib/sqlite3/resultset.rb:61:in `initialize' from C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/sqlite3- ruby-1.2.1-mswin32/lib/sqlite3/statement.rb:163:in `new' from C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/sqlite3- ruby-1.2.1-mswin32/lib/sqlite3/statement.rb:163:in `execute' from C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/sqlite3- ruby-1.2.1-mswin32/lib/sqlite3/database.rb:212:in `execute' from C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/sqlite3- ruby-1.2.1-mswin32/lib/sqlite3/database.rb:187:in `prepare' from C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/sqlite3- ruby-1.2.1-mswin32/lib/sqlite3/database.rb:211:in `execute' ... 16 levels... from C:/InstantRails/ruby/lib/ruby/1.8/test/unit/autorunner.rb: 200:in `run' from C:/InstantRails/ruby/lib/ruby/1.8/test/unit/autorunner.rb: 13:in `run' from C:/InstantRails/ruby/lib/ruby/1.8/test/unit.rb:278 from C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/ lib/rake/rake_test_loader.rb:5
I'm using Rails 1.2.3 with ruby 1.8.5, sqlite3.3.7 and sqlite3-ruby (1.2.1) Any help would be greatly appreciated!
Thanks in advance,
Frédéric Delanoy