Annoying session problem

Hi, I’ve just run into a very annoying session problem and judging by my
failure to find anything on Google it seems that nobody else has
experienced this!

I’m trying to set a session variable in application_controller.rb, using
simply:

@color = “grey”
session[:colors] = @color

When trying to look at my site I get:

undefined method `session’ for ApplicationController:Class

I’ve used this before and from all the docs this is how I’m supposed to
do it! The site was working fine until I tried using session.
ApplicationController inherits from ActionController and according to
the API documentation, the session stuff is in the actionpack gem which
is installed on my system and shows up when I run “bundle install” and
“bundle show actionpack”. I’ve also tried “gem update”.

I’m using Rails 3.1.0, Gem 1.8.13, Ruby 1.9.2, running on Ubuntu 11.10

$bundle show actionpack

/usr/lib/ruby/gems/1.9.1/gems/actionpack-3.1.0

I’ve tried this on two separate sites on the same box, one with Apache2
and one with WEBbrick, even running it as root. The second site is a
test site with no changes whatsoever made to startup or initialization
files. I’ve checked access rights, chmodding everything to 775,
restarting the whole system etc etc and I can’t work out why the blessed
thing won’t work!

Does anybody have a clue what might be going on?

Regards

Binni

ITAnet
Kirkestien 20
9230 Svenstrup

Telefon: 3020 0868

Email: [email protected]mailto:[email protected]
WWW: http://www.itanet.nuhttp://www.itanet.nu/

[cid:[email protected]]

On Wed, Dec 28, 2011 at 1:44 PM, Brynjolfur T.
[email protected]wrote:

undefined method `session’ for ApplicationController:Class****
show actionpack. Ive also tried gem update.****

Does anybody have a clue what might be going on?

You are trying to call ‘session’ as a class method on the
ApplicationController class,
which fails, like this:

$ rails c
Loading development environment (Rails 3.1.3)

007:0> ApplicationController.session
NoMethodError: undefined method session' for ApplicationController:Class from (irb):7 from /home/peterv/.rvm/gems/ruby-1.9.3-p0@base_app/gems/railties-3.1.3/lib/rails/commands/console.rb:45:in start’
from
/home/peterv/.rvm/gems/ruby-1.9.3-p0@base_app/gems/railties-3.1.3/lib/rails/commands/console.rb:8:in
start' from /home/peterv/.rvm/gems/ruby-1.9.3-p0@base_app/gems/railties-3.1.3/lib/rails/commands.rb:40:in <top (required)>’
from script/rails:6:in require' from script/rails:6:in

The ‘session’ method is available on instances of the
ApplicationController
class.

For a single action:

class HomeController < ApplicationController
def index
@color = ‘grey’
session[:colors] = @color
end
end

If you wanted to set the color for each and every action, you could do
this:

class ApplicationController < ActionController::Base

def set_session_color
@color = ‘grey’
session[:colors] = @color
end

before_filter :set_session_color
protect_from_forgery
end

HTH,

Peter


Peter V.
http://twitter.com/peter_v
http://rails.vandenabeele.com

Hi Peter, thanks a lot! It’s really obvious once I’ve had it explained

Fra: [email protected]
[mailto:[email protected]] P vegne af Peter V.
Sendt: 28. december 2011 14:28
Til: [email protected]
Emne: Re: [Rails] Annoying session problem

On Wed, Dec 28, 2011 at 1:44 PM, Brynjolfur T.
<[email protected]mailto:[email protected]> wrote:
Hi, I’ve just run into a very annoying session problem and judging by my
failure to find anything on Google it seems that nobody else has
experienced this!

I’m trying to set a session variable in application_controller.rb, using
simply:

@color = “grey”
session[:colors] = @color

When trying to look at my site I get:

undefined method `session’ for ApplicationController:Class

I’ve used this before and from all the docs this is how I’m supposed to
do it! The site was working fine until I tried using session.
ApplicationController inherits from ActionController and according to
the API documentation, the session stuff is in the actionpack gem which
is installed on my system and shows up when I run “bundle install” and
“bundle show actionpack”. I’ve also tried “gem update”.

I’m using Rails 3.1.0, Gem 1.8.13, Ruby 1.9.2, running on Ubuntu 11.10

$bundle show actionpack

/usr/lib/ruby/gems/1.9.1/gems/actionpack-3.1.0

I’ve tried this on two separate sites on the same box, one with Apache2
and one with WEBbrick, even running it as root. The second site is a
test site with no changes whatsoever made to startup or initialization
files. I’ve checked access rights, chmodding everything to 775,
restarting the whole system etc etc and I can’t work out why the blessed
thing won’t work!

Does anybody have a clue what might be going on?

You are trying to call ‘session’ as a class method on the
ApplicationController class,
which fails, like this:

$ rails c
Loading development environment (Rails 3.1.3)

007:0> ApplicationController.session
NoMethodError: undefined method session' for ApplicationController:Class from (irb):7 from /home/peterv/.rvm/gems/ruby-1.9.3-p0@base_app/gems/railties-3.1.3/lib/rails/commands/console.rb:45:in<mailto:/home/peterv/.rvm/gems/ruby-1.9.3-p0@base_app/gems/railties-3.1.3/lib/rails/commands/console.rb:45:in> start’
from
/home/peterv/.rvm/gems/ruby-1.9.3-p0@base_app/gems/railties-3.1.3/lib/rails/commands/console.rb:8:inmailto:/home/peterv/.rvm/gems/ruby-1.9.3-p0@base_app/gems/railties-3.1.3/lib/rails/commands/console.rb:8:in
start' from /home/peterv/.rvm/gems/ruby-1.9.3-p0@base_app/gems/railties-3.1.3/lib/rails/commands.rb:40:in<mailto:/home/peterv/.rvm/gems/ruby-1.9.3-p0@base_app/gems/railties-3.1.3/lib/rails/commands.rb:40:in> <top (required)>’
from script/rails:6:in require' from script/rails:6:in

The ‘session’ method is available on instances of the
ApplicationController class.

For a single action:

class HomeController < ApplicationController
def index
@color = ‘grey’
session[:colors] = @color
end
end

If you wanted to set the color for each and every action, you could do
this:

class ApplicationController < ActionController::Base

def set_session_color
@color = ‘grey’
session[:colors] = @color
end

before_filter :set_session_color
protect_from_forgery
end

HTH,

Peter


Peter V.
http://twitter.com/peter_v
http://rails.vandenabeele.com

You received this message because you are subscribed to the Google
Groups “Ruby on Rails: Talk” group.
To post to this group, send email to
[email protected]mailto:[email protected].
To unsubscribe from this group, send email to
[email protected]mailto:[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.