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: binni@itanet.nu
WWW: http://www.itanet.nu<http://www.itanet.nu/>


[cid:image001.gif@01CCC561.9E431DC0]

--
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 rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

Search Discussions

  • Peter Vandenabeele at Dec 28, 2011 at 1:28 pm

    On Wed, Dec 28, 2011 at 1:44 PM, Brynjolfur Thorvardsson 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
    `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 `<main>'

    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 Vandenabeele
    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 rubyonrails-talk@googlegroups.com.
    To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
  • Brynjolfur Thorvardsson at Dec 28, 2011 at 1:36 pm
    Hi Peter, thanks a lot! It's really obvious once I've had it explained ...

    Fra: rubyonrails-talk@googlegroups.com På vegne af Peter Vandenabeele
    Sendt: 28. december 2011 14:28
    Til: rubyonrails-talk@googlegroups.com
    Emne: Re: [Rails] Annoying session problem

    On Wed, Dec 28, 2011 at 1:44 PM, Brynjolfur Thorvardsson 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 `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 `<main>'

    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 Vandenabeele
    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 rubyonrails-talk@googlegroups.com .
    To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com .
    For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.


    --
    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 rubyonrails-talk@googlegroups.com.
    To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouprubyonrails-talk @
categoriesrubyonrails
postedDec 28, '11 at 12:50p
activeDec 28, '11 at 1:36p
posts3
users2
websiterubyonrails.org
irc#RubyOnRails

People

Translate

site design / logo © 2021 Grokbase