According to the FB SDK I must include a channel file with the appropriate headers.
Being a major NOOB and a Rails not PHP developer I have no idea how to do this.
Inside your controller:
cache_expire = 1.year
response.headers["Pragma"] = "public"
response.headers["Cache-Control"] = "max-age=#{cache_expire.to_i}"
response.headers["Expires"] = (Time.now + cache_expire).strftime("%d %m %Y %H:%I:%S %Z")
render :layout => false, :inline => "<script src='//connect.facebook.net/en_US/all.js'></script>"
Use the response.headers
hash in your controller. Docs
Example from your example
cache_expire = 60*60*24*365
response.headers["Pragma"] = "public"
response.headers["Cache-Control"] = "max-age=#{cache_expire}"
response.headers["Expires"] = ... # I'll leave this one to you.
# (Or ask another Q.)
# gmdate('D, d M Y H:i:s', time()+$cache_expire) . ' GMT');
I got tired of polluting my routes.rb
file in every facebook connected app so I wrapped a rack handler that gives the correct channel.html response in a Rails Engine and published it as a gem. You can simply include the 'fb-channel-file' gem in your Gemfile and it will be automatically mounted at /channel.html
https://github.com/peterlind/fb-channel-file
I simply added 'channel.html' to my public directory and inserted this one line in it:
<script src="//connect.facebook.net/en_US/all.js"></script>