# Can Sessions work when Radiant is run from gem?

**URL:** <https://www.ruby-forum.com/t/can-sessions-work-when-radiant-is-run-from-gem/109957>\
**Category:** Radiant CMS\
**Created:** [July 20, 2007, 5:43pm UTC](https://www.ruby-forum.com/t/can-sessions-work-when-radiant-is-run-from-gem/109957 "2007-07-20T17:43:21Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![dpitman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/a9adbd/32.png) [@dpitman](https://www.ruby-forum.com/u/dpitman)\
**Post date:** [July 20, 2007, 5:43pm UTC](https://www.ruby-forum.com/t/can-sessions-work-when-radiant-is-run-from-gem/109957/1 "2007-07-20T17:43:21Z")

</div>

I’m trying to switch to running Radiant from the gem instead of a  
full-source dump. Previously in order to use Sessions I had to  
comment-out “session :off” in /app/controllers/admin/site\_controller.rb.

The problem now is that when running from gem I don’t have access to the  
app files and cannot make this edit. Is there any way I can override the  
session global in the environment config or my extension code?

Thanks,

- Dave

---

<div class="post-metadata">

**Author:** ![dpitman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/a9adbd/32.png) [@dpitman](https://www.ruby-forum.com/u/dpitman)\
**Post date:** [July 20, 2007, 5:47pm UTC](https://www.ruby-forum.com/t/can-sessions-work-when-radiant-is-run-from-gem/109957/2 "2007-07-20T17:47:16Z")

</div>

I should also note that previously I had caching turned off on the site,  
and now I would like it turned on, since POST requests are no longer  
cached by Radiant.

So…

Current =\> Radiant from full-source; No caching; Session turned on in  
site\_controller.rb

Desired =\> Radiant from gem; Full caching; Session turned on in config  
or extension

---

<div class="post-metadata">

**Author:** ![dpitman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/a9adbd/32.png) [@dpitman](https://www.ruby-forum.com/u/dpitman)\
**Post date:** [July 20, 2007, 8:42pm UTC](https://www.ruby-forum.com/t/can-sessions-work-when-radiant-is-run-from-gem/109957/3 "2007-07-20T20:42:56Z")

</div>

David P. wrote:

> Current =\> Radiant from full-source; No caching; Session turned on in  
> site\_controller.rb
> 
> Desired =\> Radiant from gem; Full caching; Session turned on in config  
> or extension

You should be able to make an extension that does this. The activate and  
deactivate methods would look something like this:

def activate  
SiteController.class\_eval { session :on }  
end

def deactivate  
SiteController.class\_eval { session :off }  
end

–  
John L.  
[http://wiseheartdesign.com](http://wiseheartdesign.com)

---

<div class="post-metadata">

**Author:** ![dpitman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/a9adbd/32.png) [@dpitman](https://www.ruby-forum.com/u/dpitman)\
**Post date:** [July 20, 2007, 8:44pm UTC](https://www.ruby-forum.com/t/can-sessions-work-when-radiant-is-run-from-gem/109957/4 "2007-07-20T20:44:56Z")

</div>

Yet again John beats me to the punch and says the same thing I was going  
to! 😉

You might also want to make sure that this line is at the top of your  
extension file:

require\_dependency ‘application’

Sean

---

<div class="post-metadata">

**Author:** ![dpitman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/a9adbd/32.png) [@dpitman](https://www.ruby-forum.com/u/dpitman)\
**Post date:** [July 20, 2007, 9:13pm UTC](https://www.ruby-forum.com/t/can-sessions-work-when-radiant-is-run-from-gem/109957/5 "2007-07-20T21:13:51Z")

</div>

Sean C. wrote:

> You might also want to make sure that this line is at the top of your  
> extension file:
> 
> require\_dependency ‘application’

This fixed the error, but sessions don’t seem to be holding…

---

<div class="post-metadata">

**Author:** ![dpitman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/a9adbd/32.png) [@dpitman](https://www.ruby-forum.com/u/dpitman)\
**Post date:** [July 20, 2007, 9:10pm UTC](https://www.ruby-forum.com/t/can-sessions-work-when-radiant-is-run-from-gem/109957/6 "2007-07-20T21:10:24Z")

</div>

John W. Long wrote:

> You should be able to make an extension that does this. The activate and  
> deactivate methods would look something like this:
> 
> def activate  
> SiteController.class\_eval { session :on }  
> end
> 
> def deactivate  
> SiteController.class\_eval { session :off }  
> end

class MemberLoginExtension \< Radiant::Extension  
version “1.0”  
description “Adds tags to allow for member logins.”  
url “”

def activate  
Page.class\_eval { include MemberLogin }  
SiteController.class\_eval { session :on }  
end

def deactivate  
SiteController.class\_eval { session :off }  
end  
end

… This is generating the following error, which I’m guessing is  
because SiteController is not in MemberLoginExtension’s scope…

\*\* Starting Mongrel listening at 0.0.0.0:3000  
\*\* Starting Rails with development environment…  
Exiting  
/usr/local/lib/ruby/gems/1.8/gems/radiant-0.6.2/vendor/rails/activesupport/lib/active\_support/dependencies.rb:266:in  
`load_missing_constant': uninitialized constant ApplicationController (NameError) from /usr/local/lib/ruby/gems/1.8/gems/radiant-0.6.2/vendor/rails/activesupport/lib/active_support/dependencies.rb:452:in`const\_missing’  
from  
/usr/local/lib/ruby/gems/1.8/gems/radiant-0.6.2/vendor/rails/activesupport/lib/active\_support/dependencies.rb:464:in  
`const_missing' from /usr/local/lib/ruby/gems/1.8/gems/radiant-0.6.2/app/controllers/site_controller.rb:1 from /usr/local/lib/ruby/gems/1.8/gems/radiant-0.6.2/vendor/rails/activesupport/lib/active_support/dependencies.rb:203:in`load\_without\_new\_constant\_marking’  
from  
/usr/local/lib/ruby/gems/1.8/gems/radiant-0.6.2/vendor/rails/activesupport/lib/active\_support/dependencies.rb:203:in  
`load_file' from /usr/local/lib/ruby/gems/1.8/gems/radiant-0.6.2/vendor/rails/activesupport/lib/active_support/dependencies.rb:342:in`new\_constants\_in’  
from  
/usr/local/lib/ruby/gems/1.8/gems/radiant-0.6.2/vendor/rails/activesupport/lib/active\_support/dependencies.rb:202:in  
`load_file' from /usr/local/lib/ruby/gems/1.8/gems/radiant-0.6.2/vendor/rails/activesupport/lib/active_support/dependencies.rb:94:in`require\_or\_load’  
… 45 levels…  
from  
/usr/local/lib/ruby/gems/1.8/gems/radiant-0.6.2/vendor/rails/railties/lib/commands/server.rb:39  
from  
/usr/local/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:27:in  
`gem_original_require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in`require’  
from script/server:3

---

<div class="post-metadata">

**Author:** ![dpitman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/a9adbd/32.png) [@dpitman](https://www.ruby-forum.com/u/dpitman)\
**Post date:** [July 20, 2007, 9:13pm UTC](https://www.ruby-forum.com/t/can-sessions-work-when-radiant-is-run-from-gem/109957/7 "2007-07-20T21:13:59Z")

</div>

require\_dependency ‘application’ should fix that issue. This is  
something that has bugged me about Rails for a long time…  
ApplicationController’s file is ‘application.rb’ and not  
‘application\_controller.rb’.

Sean

---

<div class="post-metadata">

**Author:** ![dpitman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/a9adbd/32.png) [@dpitman](https://www.ruby-forum.com/u/dpitman)\
**Post date:** [July 20, 2007, 9:23pm UTC](https://www.ruby-forum.com/t/can-sessions-work-when-radiant-is-run-from-gem/109957/8 "2007-07-20T21:23:40Z")

</div>

Wait, why would “cache\_page? false” prevent page caching if this is a  
module and not a controller? I don’t think my logic makes sense…

---

<div class="post-metadata">

**Author:** ![dpitman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/a9adbd/32.png) [@dpitman](https://www.ruby-forum.com/u/dpitman)\
**Post date:** [July 20, 2007, 9:18pm UTC](https://www.ruby-forum.com/t/can-sessions-work-when-radiant-is-run-from-gem/109957/9 "2007-07-20T21:18:37Z")

</div>

David P. wrote:

> This fixed the error, but sessions don’t seem to be holding…

It looks like the non-logged-in version of the page is being cached,  
despite the fact that I have the following:

module MemberLogin

include Radiant::Taggable

def cache\_page?  
false  
end

…

end

---

<div class="post-metadata">

**Author:** ![dpitman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/a9adbd/32.png) [@dpitman](https://www.ruby-forum.com/u/dpitman)\
**Post date:** [July 20, 2007, 9:30pm UTC](https://www.ruby-forum.com/t/can-sessions-work-when-radiant-is-run-from-gem/109957/10 "2007-07-20T21:30:01Z")

</div>

David,

Radiant uses its own custom caching. Traditional Rails caching  
mechanisms do not apply. However, rather than including the module  
directly into Page, you may want to create a special page type for  
member-restricted pages that prevents caching. I also believe it’s  
‘cache?’ and not ‘cache\_page?’. The latter was used in behaviors, pre  
0.6.0.

Sean

---

<div class="post-metadata">

**Author:** ![dpitman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/a9adbd/32.png) [@dpitman](https://www.ruby-forum.com/u/dpitman)\
**Post date:** [July 20, 2007, 9:41pm UTC](https://www.ruby-forum.com/t/can-sessions-work-when-radiant-is-run-from-gem/109957/11 "2007-07-20T21:41:37Z")

</div>

Sean C. wrote:

> However, rather than including the module  
> directly into Page, you may want to create a special page type for  
> member-restricted pages that prevents caching.

Thanks for the help Sean. I’ll look into this method of doing things. It  
may be another ten days until I get back to this project, though…  
ugh…

---

<div class="post-metadata">

**Author:** ![dpitman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/a9adbd/32.png) [@dpitman](https://www.ruby-forum.com/u/dpitman)\
**Post date:** [September 8, 2007, 10:35am UTC](https://www.ruby-forum.com/t/can-sessions-work-when-radiant-is-run-from-gem/109957/12 "2007-09-08T10:35:27Z")

</div>

Unfortunately, session :on does not enable session.  
That’s the way it has been implemented in rails.

[This patch](http://dev.rubyonrails.org/ticket/9401) tries to  
make session management intutive.

John W. Long wrote:

> David P. wrote:
> 
> > Current =\> Radiant from full-source; No caching; Session turned on in  
> > site\_controller.rb
> > 
> > Desired =\> Radiant from gem; Full caching; Session turned on in config  
> > or extension
> 
> You should be able to make an extension that does this. The activate and  
> deactivate methods would look something like this:
> 
> def activate  
> SiteController.class\_eval { session :on }  
> end
> 
> def deactivate  
> SiteController.class\_eval { session :off }  
> end
> 
> –  
> John L.  
> [http://wiseheartdesign.com](http://wiseheartdesign.com)
