jacquescrocker / jammit-s3

Extensions so you can use jammit with s3/cloudfront for your Rails app
http://documentcloud.github.com/jammit/
MIT License
125 stars 31 forks source link

No support for staging environment #19

Open gauravgupta123 opened 13 years ago

gauravgupta123 commented 13 years ago

A single assets.yml stores the configuration keys for the plugin, irrespective of the environment. This creates problems when the app is deployed to a staging environment, since it causes files to be replaced in the same S3 bucket used by the production environment.

Infact, I would like to turn Cloudfront off on staging and get the files from my own server, or directly from S3 (without the CDN layer)

dhiemstra commented 13 years ago

+1 we can't use jammit-s3 right now because we have a heroku staging, heroku testing and heroku development server.

miloops commented 12 years ago

I workaround this by doing this:

s3_bucket: <%= "bucket_#{ENV['STAGE']}" %>

then

$ STAGE=staging bundle exec jammit-s3
iltempo commented 12 years ago

Actually Jammit itself can handle multiple stage settings: https://github.com/documentcloud/jammit/blob/master/lib/jammit.rb#L74

Simply wrap stage specific settings using stage name in assets.yml:

embed_assets: off
compress_assets: on

production:
  s3_bucket: production-assets
  s3_access_key_id: PRODUCTION KEY
  s3_secret_access_key: SecretProductionAccessKey

staging:
  s3_bucket: staging-assets
  s3_access_key_id: STAGING KEY
  s3_secret_access_key: SecretStagingAccessKey

...

Don't forget to set the environment when calling Jammit S3

$ RAILS_ENV=staging bundle exec jammit-s3

Hope that helps.

Xeus commented 10 years ago

That definitely did help me. I was trying to use a separate assets_staging.yml file and it wasn't working out for me -- but these namespaces did the trick. Thanks @iltempo.