Hi,
I’ve developed some code that allows you to use s3 as a cache store
(ie store your cache fragments at s3 instead of your web server).
It works great when I have the code in my lib/ folder.
Now I want to package it as a plugin. i’m stuck.
My plugin directory is structured:
- s3cache
– init.rb
– lib/
----- s3_cache.rb
----- s3.rb
My init.rb file is this:
require ‘s3_cache’
My lib/s3_cache file begins with:
require ‘S3’
class S3Cache <
ActionController::Caching::Fragments::UnthreadedFileStore
def initialize(bucket, cache_directory)
@aws_access_key = ‘YOURAWSACCESSKEY’ # your AWS ACCESS
KEY
@aws_secret_access_key = ‘YOURAWSSECRETKEY’ # your SECRET
@bucket = bucket
In my config/environments/development.rb file I add the following
line:
config.action_controller.fragment_cache_store =
S3Cache.new(“quizical”, “cache”)
The problem is now when I start my server, I get the following error
/usr/local/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/
active_support/dependencies.rb:123:in `const_missing’: uninitialized
constant S3Cache (NameError)
Everything works fine if I put s3_cache.rb and s3.rb in my lib/
folder. But I seem to be missing something in init.rb of my plugin or
have something else structured wrong.
any ideas?
Steve
ps. check it out at www.quizical.net and see if you can tell speed-
wise that I’m storing cache fragments at s3. I’m also serving up all
of my public directory from s3 too - essentially using it as my asset
server.