Is there a way to upload an app, but only have it accessible by me? Or perhaps by a specific set of IP’s?
Reason being, we want to run a few private online tests before opening the app up to the general public. So far I have come up with the following code:
class ApplicationController < ActionController::Base
before_filter :restrict_access
def restrict_access
whitelist = ['127.0.0.123', '10.0.1.7', '10.0.1.8'].freeze
unless( whitelist.include? request.env['REMOTE_ADDR'] )
render :file => "#{Rails.public_path}/500.html", :status => :unauthorized
return
end
end
end
However, the above code still renders the main layout file (app/views/layouts/application.html.erb) which exposes the logo and footer. For un-authorised access we want to display a page that says something like “Ooops, we are still doing a few tests and will be public soon!”. No logo of the site, no nothing. Just a simple message.
We are using devise as our authentication gem. We don’t want to add authentication functionality just to restrict access for private beta testing. We want to do it by IP instead.
Is such a thing possible? Perhaps the code above just needs working on? Or is there a gem that we can use solely for this requirement?
If you’re deploying on Apache or Nginx, this should be easy enough to configure in the relevant site config files. Doesn’t need to be in the app itself, in that case.
I’m not totally sure what the issue is with your existing code. Are you saying that the filter seems to be ignored, or that the file renders within the layout? If it’s the latter, specifying
:layout => falseas a render option should take care of that.