Free addons!
heroku addons:add memcachier
heroku addons:add mandrill:starter
heroku addons:add newrelic
heroku addons:add pgbackups:auto-month
heroku addons:add papertrail
group :production do | |
gem 'unicorn' | |
# Enable gzip compression on heroku, but don't compress images. | |
gem 'heroku-deflater' | |
# Heroku injects it if it's not in there already | |
gem 'rails_12factor' | |
end | |
gem 'memcachier' | |
gem 'dalli' | |
# Fast IO for memcache | |
gem 'kgio' | |
# Serve static assets through Rack + Memcache | |
# https://devcenter.heroku.com/articles/rack-cache-memcached-rails31 | |
gem 'rack-cache' |
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb |
# config/environments/production.rb | |
# ... | |
# Enable Rails's static asset server for Heroku | |
config.serve_static_assets = true | |
# Set static assets cache header. rack-cache will cache those. | |
config.static_cache_control = "public, max-age=31536000" | |
config.cache_store = :dalli_store | |
client = Dalli::Client.new(ENV["MEMCACHIER_SERVERS"], | |
:value_max_bytes => 10485760, | |
:expires_in => 86400) # 1 day | |
# Configure rack-cache for using memcachier | |
config.action_dispatch.rack_cache = { | |
:metastore => client, | |
:entitystore => client | |
} | |
# Send emails via mandrill | |
ActionMailer::Base.delivery_method = :smtp | |
config.action_mailer.smtp_settings = { | |
:address => 'smtp.mandrillapp.com', | |
:port => '587', | |
:authentication => :plain, | |
:user_name => ENV['MANDRILL_USERNAME'], | |
:password => ENV['MANDRILL_APIKEY'], | |
:domain => 'heroku.com', | |
} | |
# ... | |
# config/unicorn.rb | |
worker_processes 3 | |
timeout 30 | |
preload_app true | |
before_fork do |server, worker| | |
# Replace with MongoDB or whatever | |
if defined?(ActiveRecord::Base) | |
ActiveRecord::Base.connection.disconnect! | |
Rails.logger.info('Disconnected from ActiveRecord') | |
end | |
# If you are using Redis but not Resque, change this | |
if defined?(Resque) | |
Resque.redis.quit | |
Rails.logger.info('Disconnected from Redis') | |
end | |
sleep 1 | |
end | |
after_fork do |server, worker| | |
# Replace with MongoDB or whatever | |
if defined?(ActiveRecord::Base) | |
ActiveRecord::Base.establish_connection | |
Rails.logger.info('Connected to ActiveRecord') | |
end | |
# If you are using Redis but not Resque, change this | |
if defined?(Resque) | |
Resque.redis = ENV['REDIS_URI'] | |
Rails.logger.info('Connected to Redis') | |
end | |
end |
You can change the Sendgrid by the Mandrill. In the free plan, they have the double of emails.
@mathieugagne Thanks! I just fixed it!
@maurogeorge Done!
@croaky Fastly charges a minimum of $50 a month right?
Could use a gem 'newrelic'
line in the Gemfile. I added the addon but missed the gem, and was wondering why Newrelic was "waiting on data" 😁
do u need to have workers?
The command is now heroku addons:create
instead of heroku addons:add
Also, heroku addons:add pgbackups:auto-month
doesn't exist. The only postgres backup system I see now is heroku addons:create autobus
These settings, minus Memcache, are in Suspenders. I prefer fronting my Heroku apps with Fastly to Memcache for the fastest static asset serving that only hits the Heroku dynos once per cache via origin pull.