Вы можете использовать промежуточное программное обеспечение стойки, но для этого потребуется сначала разветвить его на Github.
https://github.com/roja/rack-geo
На данный момент этот проект дает вам названия городов и организаций, основанные на IP-адресе компьютера, отправляющего запрос - вам также нужен код страны.
Вы можете добавить его в код относительно легко здесь: https://github.com/roja/rack-geo/blob/master/lib/rack/geo.rb
Затем вы можете установить переменную среды Rack, чтобы указать, является ли запрос из США, в методе вызова:
Rack::Request.new(env)["born"] = "...in the USA"
Добавьте его в свой конфигурационный файл:
config.middleware.use Rack::Geo
И затем в вашем контроллере вы можете проверить, правильно ли установлена переменная окружения в запросе, и перенаправить на сообщение «извините, вы должны быть из США'page:
if params['born'] == "...in the USA"
redirect_to "/not_from_round_here"
end
Имейте в виду, что прослушивание IP-адресов подвержено ошибкам.Я часто езжу на поездах в Великобритании и в конечном итоге Google на немецком языке.