Skip to content

Instantly share code, notes, and snippets.

@theSociableme
Created August 13, 2011 16:20
Show Gist options
  • Save theSociableme/1143998 to your computer and use it in GitHub Desktop.
Save theSociableme/1143998 to your computer and use it in GitHub Desktop.
Visit - Geocoder - : undefined method `geocoded_by' for #<Class:0x007fbefbacde30> (NoMethodError)
./models/visit.rb
class Visit < ActiveRecord::Base
attr_accessible :ip_address, :country, :city, :latitude, :longitude
belongs_to :link
geocoded_by :ip_address
after_validation :geocode
end
--------------------------------------------
./service.rb
require 'rubygems'
require 'bundler/setup'
require 'active_record'
require 'geocoder'
require 'sinatra'
require 'sinatra/activerecord'
require 'json'
require 'alphadecimal'
require "#{File.dirname(__FILE__)}/models/link"
require "#{File.dirname(__FILE__)}/models/url"
require "#{File.dirname(__FILE__)}/models/visit"
logger = Logger.new(STDOUT)
['/info/:short_url', '/info/:short_url/:num_of_days', '/info/:short_url/:num_of_days/:map'].each do |path|
get path do
link = Link.find_by_identifier(params[:short_url])
if link
link.to_json(:include => :visits)
else
error 404, "This link is not defined yet".to_json
end
end
end
get '/:short_url' do
logger.info("inside short url")
link = Link.find_by_identifier(params[:short_url])
if link
logger.info("request location inspect: " + request.location.inspect)
link.visits.create(:ip_address => get_remote_ip(env), :city => request.location.city, :country => request.location.country, :latitude => request.location.latitude, :longitude => request.location.longitude)
link.save
redirect link.url.original_url, 301
else
logger.info("link not found")
error 404, "Link not found".to_json
end
end
get '/' do
"Hello World"
end
error do
"Error"
end
def get_remote_ip(env)
if addr = env['HTTP_X_FORWARDED_FOR']
addr.split(',').first.strip
else
env['REMOTE_ADDR']
end
end
------------------------------------
Error
: undefined method `geocoded_by' for #<Class:0x007fbefbacde30> (NoMethodError)
from /Users/mwagner72/Dropbox/rails_projects/antgs/models/visit.rb:6:in `<class:Visit>'
from /Users/mwagner72/Dropbox/rails_projects/antgs/models/visit.rb:1:in `<top (required)>'
from /Users/mwagner72/Developer/.rvm/gems/ruby-1.9.2-p180@antgs/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:239:in `require'
from /Users/mwagner72/Developer/.rvm/gems/ruby-1.9.2-p180@antgs/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:239:in `block in require'
from /Users/mwagner72/Developer/.rvm/gems/ruby-1.9.2-p180@antgs/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:225:in `block in load_dependency'
from /Users/mwagner72/Developer/.rvm/gems/ruby-1.9.2-p180@antgs/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:596:in `new_constants_in'
from /Users/mwagner72/Developer/.rvm/gems/ruby-1.9.2-p180@antgs/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:225:in `load_dependency'
from /Users/mwagner72/Developer/.rvm/gems/ruby-1.9.2-p180@antgs/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:239:in `require'
from /Users/mwagner72/Dropbox/rails_projects/antgs/service.rb:15:in `<top (required)>'
from /Users/mwagner72/Developer/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /Users/mwagner72/Developer/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment