Ruby on Rails & SQLite3

Hi,

I'm just a beginner in Ruby. Have just installed Rails and Gems. I am using SQLite3 as the db.

When going thro the "CookBook" tutorial. after creating the recipes table in the sqlite3 database. and changing the config file - database.yml as

development: adapter: sqlite3 dbfile: db/test.db

test: adapter: sqlite3 dbfile: db/test.db

production: adapter: sqlite3 dbfile: db/test.db

and when trying to scaffold the recipe table from the browser using - http://localhost:3000/recipe/new

I'm getting the following error

<Error> ActiveRecord::StatementInvalid in RecipeController#new

ActiveRecord::StatementInvalid RAILS_ROOT: ./script/../config/..

Show session dump

  1. Did you migrate
  2. Did you restart WEBrick
  3. is SQLite3 on your path?
  4. Did you do gem install sqlite3-ruby

Let me know and we can go from there.

Hi Brian,

1. Did you migrate No , i did not migrate

2. Did you restart WEBrick yes, Had restarted WEBrick after changing the config files.

3. is SQLite3 on your path? Yes, SQLite3 is set in my path.

4. Did you do gem install sqlite3-ruby Yes, i have used gem install sqlite3-ruby-1.1.0 and have installed the latest version of mswin32.gem

What would the problem be.??

Raj

Did you try creating a new recipe via the console?

cd to the root of your rails application and enter:

ruby script/console

in the console enter

r = Receipe.new r.save

And check what happens.

I haven't developed anything on windows for a while but iirc you have to specify the full path to your db, i.e.

dbfile: c:/yourapp/db/test.db

I cannot remember if it's forward of back slashes, you should try both

You may also want to look at this - http://redhanded.hobix.com/cult/sqlite3Gem_whySSensibilitiesRepack.html

easiest option for windows by the look of things.

The full path is not required in windows.

dbfile: db/test.db

is fine.

Hi Malmeida,

Tried

r = Receipe.new using ruby script/console.

Am getting the same error

ActiveRecord::StatementInvalid: ActiveRecord::StatementInvalid         from C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_recor d/connection_adapters/sqlite_adapter.rb:259:in `table_structure'         from C:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_suppo rt/core_ext/object/misc.rb:23:in `returning'         from C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_recor d/connection_adapters/sqlite_adapter.rb:258:in `table_structure'         from C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_recor d/connection_adapters/sqlite_adapter.rb:196:in `columns'         from C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_recor d/base.rb:696:in `columns'         from C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_recor d/base.rb:1969:in `attributes_from_column_definition'         from C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_recor d/base.rb:1351:in `initialize_without_callbacks'         from C:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_recor d/callbacks.rb:236:in `initialize'         from (irb):1:in `new'         from (irb):1 Active Record::Statement Invalid

Been stuck with this for the past 1 week. Would be really happy if anybody could help me solve this problem :slight_smile:

Raj

What does your model look like?

You did not migrate, so did you even create a table Recipe in the database? What does your table structure look like? You can fire up sqlite and dump the table structure

sqlite db/dev.db

.dump

That should print out what your tables look like. It could be table name and your model names are not matching (Rails magically assumes pluralized table names, but the model names are singular, etc.), or you might not even have a Recipe table in your db.

Another question. Are you spelling Recipe or Receipe?! In the above posts, I see Receipe but should be Recipe.