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