7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/auth_trail/geocode_job.rb', line 7
def perform(login_activity)
result =
begin
Geocoder.search(login_activity.ip).first
rescue NameError
raise "Add the geocoder gem to your Gemfile to use geocoding"
rescue => e
Rails.logger.info "Geocode failed: #{e.message}"
nil
end
if result
attributes = {
city: result.try(:city),
region: result.try(:state),
country: result.try(:country),
country_code: result.try(:country_code),
latitude: result.try(:latitude),
longitude: result.try(:longitude)
}
attributes.each do |k, v|
login_activity.try("#{k}=", v.presence)
end
login_activity.save!
end
end
|