7stud --
2009-Apr-23 14:44 UTC
beginning ruby session problem / how do I rollback with git?
Hi,
Rails 2.3.2
I''m following along with the examples in AWDWR (3rd), and around about
p. 103, where you are working with a session table you created, I
decided to free lance a bit. At some point, I tried to "clear" the
session by doing the following:
class StoreController < ApplicationController
...
private
def find_cart
#session[:cart] ||= Cart.new
session[:cart] = Cart.new #<------********
end
I figured that would "erase" the old cart, and let me continue with a
new, empty cart. However, everything is completely messed up now, and
when I try to access a "store page" (which lists the products for
sale)
using the following url:
http://localhost:3000/store
I get an error page that says:
We''re sorry but something went wrong.
We''ve been notified about this issue and
we will take a look at it shortly.
As a fix, I tried rolling back the migration that created the session
table:
rake db:rollback
and then doing:
db:migrate
but I get that same error page. So I''m stuck. So much for free
lancing. Is there some obvious way I can get rid of that error page and
get sessions working again.
Alternatively, I have git installed and I committed my changes at the
end of the last chapter(p. 96). But I''ve read several git tutorials,
and I can''t figure out how to rollback to a previous version of my
code.
Thanks.
--
Posted via http://www.ruby-forum.com/.
7stud --
2009-Apr-23 14:53 UTC
Re: beginning ruby session problem / how do I rollback with
7stud -- wrote:> Hi, > > Rails 2.3.2 > > However, everything is completely messed up now, and > when I try to access a "store page" (which lists the products for sale) > using the following url: > > http://localhost:3000/store > > I get an error page that says: > > We''re sorry but something went wrong. > We''ve been notified about this issue and > we will take a look at it shortly. >Sorry, I can access the store page. It''s when I click a button that calls an add_to_cart action that I get that error message. This is the url after I click on the add_to_cart button: http://localhost:3000/store/add_to_cart/5 -- Posted via http://www.ruby-forum.com/.
7stud --
2009-Apr-23 14:56 UTC
Re: beginning ruby session problem / how do I rollback with
7stud -- wrote:> > Sorry, I can access the store page. It''s when I click a button that > calls an add_to_cart action that I get that error message. This is the > url after I click on the add_to_cart button: > > http://localhost:3000/store/add_to_cart/5Here is the add_to_cart action: class StoreController < ApplicationController def index @products = Product.find_products_for_sale now = Time.now @date = now.strftime("%m/%d/%Y") @time = now.strftime("%I:%M%p") end def add_to_cart product = Product.find(params[:id]) @cart = find_cart @cart.add_product(product) end private def find_cart session[:cart] ||= Cart.new end end -- Posted via http://www.ruby-forum.com/.
7stud --
2009-Apr-23 16:38 UTC
Re: beginning ruby session problem / how do I rollback with
7stud -- wrote:> private > def find_cart > session[:cart] ||= Cart.new > endIf I change that method to: def find_cart Cart.new end then clicking on an "add to cart" button no longer shows me the error message. I get a view that lists what was added to the cart. However, without sessions the view just shows the current item that is being added. As soon as I add back the line that mentions sessions:> private > def find_cart > session[:cart] ||= Cart.new > endI get the error message. I tried rolling back the migration again: rake db:rollback then deleting the migration file: /depot/db/migrate$ 20090423153751_create_sessions.rb then recreating the migration file: /depot$ rake db:sessions:create and recreating the table: /depot$ rake db:migrate then restarting the server. But that did not solve my problem. -- Posted via http://www.ruby-forum.com/.
7stud --
2009-Apr-23 18:02 UTC
Re: beginning ruby session problem / how do I rollback with
I figured out how to rollback with git from this website:
http://www-cs-students.stanford.edu/~blynn/gitmagic/ch02.html#_advanced_undo_redo
$ git log
commit 1964b4f78d82da730ccf5fc6d1ba7d1e1b5ae266
Author: me
Date: Wed Apr 22 18:57:48 2009 -0600
End of chapter 7, p. 96
commit a262fdcd503766cae2c5643923180480151ff669
Author: me
Date: Tue Apr 21 03:28:49 2009 -0600
Initial import
/depot$ git reset --hard 1964b4f78d82da730ccf5fc6d1ba7d1e1b5ae266
HEAD is now at 1964b4f End of chapter 7, p. 96
$
However, apparently doing a rollback doesn''t delete the new files you
created since the last commit. So, I also deleted the migration file
for creating the sessions table.
Then I started over with the steps at the beginning of the chapter.
After adding all the necessary code, I clicked on the add to cart
button, and I get the same error message:
http://localhost:3000/store/add_to_cart/5
We''re sorry, but something went wrong.
We''ve been notified about this issue and we''ll take a look
at it
shortly.
So it seems like there is something wrong with my database.
--
Posted via http://www.ruby-forum.com/.
7stud --
2009-Apr-23 18:23 UTC
Re: beginning ruby session problem / how do I rollback with
7stud -- wrote:> So it seems like there is something wrong with my database.I tried rolling back my migrations to the beginning: /depot$ rake db:migrate VERSION=0 (in /Users/me/2testing/dir1/rails/depot) == CreateSessions: reverting ================================================-- drop_table(:sessions) -> 0.0014s == CreateSessions: reverted (0.0016s) ======================================= == AddTestData: reverting ===================================================== AddTestData: reverted (0.0034s) ========================================== == AddPriceToProduct: reverting =============================================-- remove_column(:products, :price) -> 0.0263s == AddPriceToProduct: reverted (0.0265s) ==================================== == CreateProducts: reverting ================================================-- drop_table(:products) -> 0.0010s == CreateProducts: reverted (0.0012s) ======================================= which left me with this: /depot$ sqlite3 db/development.sqlite3 SQLite version 3.6.13 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .mode line sqlite> select * from sqlite_master; type = table name = schema_migrations tbl_name = schema_migrations rootpage = 2 sql = CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) type = index name = unique_schema_migrations tbl_name = schema_migrations rootpage = 3 sql = CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version") type = table name = sqlite_sequence tbl_name = sqlite_sequence rootpage = 5 sql = CREATE TABLE sqlite_sequence(name,seq) Then I recreated all the tables: /depot$ rake db:migrate (in /Users/me/2testing/dir1/rails/depot) == CreateProducts: migrating ================================================-- create_table(:products) -> 0.0019s == CreateProducts: migrated (0.0021s) ======================================= == AddPriceToProduct: migrating =============================================-- add_column(:products, :price, :decimal, {:precision=>8, :scale=>2, :default=>0}) -> 0.0118s == AddPriceToProduct: migrated (0.0122s) ==================================== == AddTestData: migrating ===================================================== AddTestData: migrated (0.0127s) ========================================== == CreateSessions: migrating ================================================-- create_table(:sessions) -> 0.0015s -- add_index(:sessions, :session_id) -> 0.0004s -- add_index(:sessions, :updated_at) -> 0.0004s == CreateSessions: migrated (0.0027s) ======================================= Then If I use this version of the find_cart method in the store controller: class StoreController < ApplicationController def index @products = Product.find_products_for_sale now = Time.now @date = now.strftime("%m/%d/%Y") @time = now.strftime("%I:%M%p") end def add_to_cart product = Product.find(params[:id]) @cart = find_cart @cart.add_product(product) end #*********************** private def find_cart Cart.new end #*********************** end when I click on my "add to cart" button, a view displays the current item. However, if I try to use sessions: #*********************** private def find_cart session[:cart] ||= Cart.new end #*********************** then I get the error message. The only thing I haven''t tried is to delete my whole project and start over. -- Posted via http://www.ruby-forum.com/.