bcms_s3 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/README.markdown +18 -0
  2. data/lib/bcms_s3/s3_module.rb +29 -1
  3. metadata +2 -2
data/README.markdown CHANGED
@@ -10,6 +10,24 @@ This should be in the following format
10
10
  ## Using this module with [Heroku](http://heroku.com)
11
11
  If using this module in conjunction with deployment on heroku you should probably turning heroku caching on by setting Cms::S3.heroku_caching in config/initializers/browsercms.rb to true.
12
12
 
13
+ In order to avoid putting your secret AWS key in the s3.yml file, you can take advantage of [heroku's config vars](http://docs.heroku.com/config-vars). Use ERB to read the values from the environment. This way you can safely commit your s3.yml file to the repository without revealing your amazon credentials.
14
+
15
+ access_key_id: <%= ENV['s3_access_key_id'] %>
16
+ secret_access_key: <%= ENV['s3_secret_access_key'] %>
17
+ bucket: <%= ENV['s3_bucket'] %>
18
+
19
+ For developing on your local machine, export the s3 variables to your environment.
20
+
21
+ export s3_access_key_id='your AWS access key'
22
+ export s3_secret_access_key='your AWS secret access key'
23
+ export s3_bucket='your unique bucket name'
24
+
25
+ Set the config vars on heroku to get it working there as well.
26
+
27
+ heroku config:add s3_access_key_id='your AWS access key'
28
+ heroku config:add s3_secret_access_key='your AWS secret access key'
29
+ heroku config:add s3_bucket='your unique bucket name'
30
+
13
31
  ## www prefix for non cms urls
14
32
  If your non cms domain is www.myapp.com rather than app.com this can be enabled by setting Cms::S3.www_domain_prefix in config/initializers/browsercms.rb to true.
15
33
 
@@ -7,6 +7,32 @@ module Cms
7
7
  attr_accessor :www_domain_prefix
8
8
  attr_accessor :options
9
9
  end
10
+ module AttachmentsController
11
+ def self.included(controller_class)
12
+ controller_class.alias_method_chain :show, :s3
13
+ end
14
+
15
+ def show_with_s3
16
+ @attachment = ::Attachment.find(params[:id])
17
+ @attachment = @attachment.as_of_version(params[:version]) if params[:version]
18
+ if Cms::S3.enabled
19
+ #get the file off S3
20
+ redirect_to("http://#{Cms::S3.options[:bucket]}.s3.amazonaws.com/#{@attachment.file_location}")
21
+ else
22
+ #Construct a path to where this file would be if it were cached
23
+ @file = @attachment.full_file_location
24
+
25
+ #Stream the file if it exists
26
+ if @path != "/" && File.exists?(@file)
27
+ send_file(@file,
28
+ :filename => @attachment.file_name,
29
+ :type => @attachment.file_type,
30
+ :disposition => "inline"
31
+ )
32
+ end
33
+ end
34
+ end
35
+ end
10
36
  module ContentController
11
37
  def self.included(controller_class)
12
38
  controller_class.alias_method_chain :render_page_with_caching, :s3
@@ -103,6 +129,7 @@ module Cms
103
129
  end
104
130
  end
105
131
 
132
+ Cms::AttachmentsController.send(:include, Cms::S3::AttachmentsController)
106
133
  Cms::ContentController.send(:include, Cms::S3::ContentController)
107
134
  Attachment.send(:include, Cms::S3::Attachment)
108
135
  Cms::ApplicationController.send(:include, Cms::S3::ApplicationController)
@@ -114,6 +141,7 @@ Cms::S3.heroku_caching = false if Cms::S3.heroku_caching.nil?
114
141
  Cms::S3.www_domain_prefix = false if Cms::S3.www_domain_prefix.nil?
115
142
  # load s3 options if s3.yml exists
116
143
  if File.exists?("#{RAILS_ROOT}/config/s3.yml")
117
- Cms::S3.options = YAML.load_file("#{RAILS_ROOT}/config/s3.yml")
144
+ yaml_string = IO.read("#{RAILS_ROOT}/config/s3.yml")
145
+ Cms::S3.options = YAML::load(ERB.new(yaml_string).result)
118
146
  Cms::S3.options.symbolize_keys!
119
147
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bcms_s3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anthony Underwood
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-26 00:00:00 +00:00
12
+ date: 2010-06-17 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies: []
15
15