12

In my (non-Rails) app, I'm trying to define a Sequel model:

class Foo < Sequel::Model
end

When I run my app, I'm getting the error:

No database associated with Sequel::Model: 
have you called Sequel.connect or Sequel::Model.db= ? (Sequel::Error)

In fact, I have not called connect, because the 'require Foo' is happening before my database code runs.

Of course, I could switch things around so that the require is done after the DB connects, but is there another option? Currently I have all my app's 'require' statements in one file and it would be nice not to have to break that for these model class files.

Andrew Marshall
  • 95,083
  • 20
  • 220
  • 214
Lynn
  • 1,103
  • 15
  • 29

1 Answers1

11

By design, Sequel requires the database connection be set up before model class definition, since it parses the database schema on model class creation. So you should set up your initialization code to connect to the database first.

Jeremy Evans
  • 11,959
  • 27
  • 26
  • 16
    I've just read this and I have to disagree on the design decision. It's terrible to have to connect to the database before loading a gem that includes sequel models. – josemota Feb 05 '15 at 16:14
  • 2
    Only other way to do this is have an explicit schema definition within the model or schema.rb file which is how I think activerecord does it. – PressingOnAlways Apr 26 '16 at 21:10