Garb просто перестал работать в Rails 3 без прикосновения

#ruby-on-rails-3 #google-analytics

#ruby-on-rails-3 #google-analytics

Вопрос:

У меня есть модель Garb:

 class Visits

  extend Garb::Model

  metrics :visits, :new_visits, :pageviews
  dimensions :month, :hostname, :network_domain, :country, :region, :source

end
  

И у меня есть эта строка в моем контроллере:

 for visit in Visits.results(profile, :start_date => (Date.today-numdays), :filters => { :hostname.eql => "#{@brand.subdomain}.mysite.com" })
  

Это сработало потрясающе. Но внезапно, хотя ни один из фактических кодов не был изменен:

 NoMethodError in AnalyticsController#index
undefined method `eql' for :hostname:Symbol
  

Что может быть причиной этого?

Ответ №1:

По какой-то причине garb / lib / support.rb больше не загружается. Вы поместили :require => false в строку garb gem в Gemfile?

Комментарии:

1. Нет, это просто «драгоценный камень»garb», может ли где-то быть какое-то столкновение с пространством имен?

2. Возможно, есть какой-то другой драгоценный камень, который изменяет Symbol. Например, Mongoid делает это.

3. Что возвращает (:foo.methods — Class.methods)?

Ответ №2:

Вы установили right_http_connection-1.3.0 gem? Это приведет к тому, что garb / lib / support.rb не будет загружен, если вам требуется ‘right_http_connection’ перед ‘garb’. Если это возможно, вы могли бы исправить это, установив right_http_connection в нижнем правом углу, например right_http_connection-1.2.4.

В конце концов, вы можете использовать command

  find /Your/gems/installed/dir -name "*.rb" -print | xargs grep '<support>' | grep  'require'
  

чтобы найти, из-за каких файлов ваш garb / lib / support.rb больше не загружался.
Эта ссылка http://kayakjang.github.com/2011/05/27/garb.html может быть полезно для вас в решении этой проблемы.

Ответ №3:

Я исправил это, вырезав и вставив содержимое garb / lib /support.rb в файл environment.rb. Не идеально, я знаю. Но я не знаю, какой символ gem update модифицировал, и это работает. Спасибо Роману за то, что указал мне правильное направление.