Не могу использовать класс Geocoder в моем контроллере

У меня такая проблема: я хочу использовать ajax-запрос для получения местоположения пользователя, поэтому я создал действие в своем контроллере и отобразил результат функции Geocoder в json. Вот код:

  def find_location
   location = Geocoder.coordinates(params[:location])
   render :json => (location)
  end

Локально работает отлично, на хероку тоже работает, но когда я добавил этот код в другой проект - мне показывает эту ошибку

   NameError in ConnectionsController#find_location

   uninitialized constant ConnectionsController::Geocoder

Странно, потому что это работает в консоли:

      Geocoder.coordinates "Ukraine"
       => [48.379433, 31.16558] 

Я попытался включить Geocoder::Model, но это не сработало.

Кто-нибудь может мне помочь ?


person deny7ko    schedule 09.02.2013    source источник
comment
Вы добавили гем геокодера в Gemfile этого другого проекта?   -  person Hck    schedule 09.02.2013
comment
Конечно) Bundle show gemcoder показывает мне gemcoder   -  person deny7ko    schedule 09.02.2013
comment
Опечатка) Геокодер конечно. Я могу использовать его в своей консоли rails, поэтому он ДЕЙСТВИТЕЛЬНО существует в моем gemfile.   -  person deny7ko    schedule 09.02.2013
comment
Работает ли location = ::Geocoder.coordinates(params[:location]) вместо текущего location = Geocoder.coordinates(params[:location])?   -  person Hck    schedule 09.02.2013
comment
Когда я поставил ваш первый вариант в свой контроллер - я получил ошибку uninitialized constant Geocoder. В localhost я использовал - второй вариант.   -  person deny7ko    schedule 09.02.2013
comment
В консоли rails оба варианта работают.   -  person deny7ko    schedule 09.02.2013
comment
@Hck, может быть, он почему-то не может найти модуль? Как я могу получить местоположение модуля?   -  person deny7ko    schedule 09.02.2013


Ответы (3)


Основываясь на этой проблеме, вам необходимо перезапустить всю производственную машину, а не только ваш apache или nginx. .

На самом деле мне пришлось открыть вопрос, потому что он не работает для меня. https://github.com/alexreisner/geocoder/issues/501

person rderoldan1    schedule 17.08.2013

убедитесь, что ваш geocoder gem не сгруппирован внутри :development или :test внутри Gemfile

это должно быть вне групп, чтобы я мог получить доступ во всех средах

Ex:

#Gemfile

group :development, :test do
  #your gems
end 

gem 'geocoder'
person sameera207    schedule 09.02.2013
comment
это вне групп и после монгоидного драгоценного камня/ - person deny7ko; 09.02.2013
comment
если он работает в dev, а не в prod, то это должно быть проблема с загрузкой. Вы также выполнили пакетную установку в своей производственной среде? - person sameera207; 09.02.2013
comment
Да, пакет запуска устанавливается несколько раз. Я видел эту проблему — github.com/alexreisner/geocoder/issues/259 — должен Я перезапускаю сервер после внесения изменений в файл application.rb? (добавлено требование «geocoder/models/mongoid») - person deny7ko; 11.02.2013
comment
да, в производственном режиме после внесения любых изменений вам нужно перезапустить сервер, выполнив touch tmp/restart.txt - person sameera207; 11.02.2013

Вы случайно не используете Docker для своего внутреннего кода?

Если вы это сделаете, то после того, как вы установили какой-либо гем, вам нужно остановить контейнер Rails, собрать (или извлечь из dockerhub, если вы используете dockerhub) новый образ и снова запустить свои контейнеры.

Все хорошо ????

person Andre Song    schedule 18.07.2018