Re: Sequel::Model, set_schema and lazy schema loading

2018-03-13 Thread Jeremy Evans
On Tuesday, March 13, 2018 at 7:26:28 AM UTC-7, Eleanor McHugh wrote:
>
> I'm getting back into Sequel after a break of several years and am running 
> into problems creating Sequel::Model subclasses which use set_schema. Every 
> time I try this pattern I'm getting runtime errors of the form:
>
>  `prepare': Amalgalite::SQLite3::Error: Failure to prepare statement 
>> SELECT * FROM `services` LIMIT 1 : [SQLITE_ERROR 1] : no such table: 
>> services (Sequel::DatabaseError)
>
>
> where my code is of the form
>
> require 'sequel'
>> DB = Sequel.connect database: 'database.db', adapter: 'amalgalite', mode: 
>> 'w+'
>> class Service < Sequel::Model
>> set_schema do
>> primary_key :id
>> String :address, unique: true, null: false
>> end
>> end
>
>
> This pattern worked perfectly in the last major project I did with Sequel 
> and I'm baffled as to what I'm doing wrong. The only substantive difference 
> is that for that project I used a MySQL backend rather than Amalgalite. On 
> the off-chance this is an adapter bug I've also tried with the standard 
> SQLite adapter.
>
> One thing I noticed reading through the RDoc for Sequel::Model is the 
> @@lazy_schema_loading variable and I've tried setting this via its accessor 
> but that raises a NoMethodError.
>
> Any insights into what I'm doing wrong will be gratefully received.
>

I'm not sure what version of Sequel you are running.  In Sequel 5, 
set_schema does not exist.  Sequel does not use class variables at all, not 
in core nor in any plugins or extensions.

You probably want to change the code to:

require 'sequel'
DB = Sequel.connect database: 'database.db', adapter: 'amalgalite', mode: 
'w+'
DB.create_table?(:services) do
  primary_key :id
  String :address, unique: true, null: false
end
class Service < Sequel::Model
end

Maybe that will help.

Thanks,
Jeremy

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sequel-talk+unsubscr...@googlegroups.com.
To post to this group, send email to sequel-talk@googlegroups.com.
Visit this group at https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.


Sequel::Model, set_schema and lazy schema loading

2018-03-13 Thread Eleanor McHugh
I'm getting back into Sequel after a break of several years and am running 
into problems creating Sequel::Model subclasses which use set_schema. Every 
time I try this pattern I'm getting runtime errors of the form:

 `prepare': Amalgalite::SQLite3::Error: Failure to prepare statement SELECT 
> * FROM `services` LIMIT 1 : [SQLITE_ERROR 1] : no such table: services 
> (Sequel::DatabaseError)


where my code is of the form

require 'sequel'
> DB = Sequel.connect database: 'database.db', adapter: 'amalgalite', mode: 
> 'w+'
> class Service < Sequel::Model
> set_schema do
> primary_key :id
> String :address, unique: true, null: false
> end
> end


This pattern worked perfectly in the last major project I did with Sequel 
and I'm baffled as to what I'm doing wrong. The only substantive difference 
is that for that project I used a MySQL backend rather than Amalgalite. On 
the off-chance this is an adapter bug I've also tried with the standard 
SQLite adapter.

One thing I noticed reading through the RDoc for Sequel::Model is the 
@@lazy_schema_loading variable and I've tried setting this via its accessor 
but that raises a NoMethodError.

Any insights into what I'm doing wrong will be gratefully received.

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sequel-talk+unsubscr...@googlegroups.com.
To post to this group, send email to sequel-talk@googlegroups.com.
Visit this group at https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.