oldmoe / litestack

MIT License
1.02k stars 56 forks source link

Rails: Database tables required when building assets (or anything else for that matter) #113

Closed skiz closed 4 months ago

skiz commented 4 months ago

I was attempting to deploy my application to fly.io and kept receiving SQLite3::SQLException: no such table: main.users (SQLite3::SQLException) on a build host when attempting to build the assets. There is no database obviously, however I traced this back to the

litesearch do |schema|
   ...
end

within my models. It seems that it's blatantly attempting to connect to the database and index things that don't exist yet.

SQLite3::SQLException: no such table: main.users (SQLite3::SQLException)
/Users/myuser/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/litestack-0.4.3/lib/litestack/litedb.rb:131:in `initialize'
/Users/myuser/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/litestack-0.4.3/lib/litestack/litedb.rb:131:in `initialize'
/Users/myuser/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/litestack-0.4.3/lib/litestack/litedb.rb:68:in `new'
/Users/myuser/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/litestack-0.4.3/lib/litestack/litedb.rb:68:in `prepare'
/Users/myuser/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sqlite3-1.7.3-arm64-darwin/lib/sqlite3/database.rb:293:in `execute_batch'
/Users/myuser/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/litestack-0.4.3/lib/litestack/litesearch/index.rb:167:in `do_create'
/Users/myuser/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/litestack-0.4.3/lib/litestack/litesearch/index.rb:40:in `block in initialize'
/Users/myuser/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sqlite3-1.7.3-arm64-darwin/lib/sqlite3/database.rb:658:in `transaction'
/Users/myuser/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/litestack-0.4.3/lib/litestack/litedb.rb:40:in `transaction'
/Users/myuser/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/litestack-0.4.3/lib/litestack/litesearch/index.rb:35:in `initialize'
/Users/myuser/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/litestack-0.4.3/lib/litestack/litesearch.rb:25:in `new'
/Users/myuser/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/litestack-0.4.3/lib/litestack/litesearch.rb:25:in `search_index'
/Users/myuser/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/litestack-0.4.3/lib/litestack/litesearch/model.rb:44:in `litesearch'
/Users/myuser/Projects/myproject/app/models/user.rb:12:in `<class:User>'
/Users/myuser/Projects/myproject/app/models/user.rb:6:in `<main>'

Also after dropping my local dev database, I get the same error when building assets, and cannot even migrate without commenting out these blocks.

Perhaps there is a cleaner way to deal with deferred indexing or simply warning on stderr that indexing will be skipped?