#ruby-on-rails #ruby #rubygems
#ruby-on-rails #ruby #rubygems
Вопрос:
Мне нужна проверка даты, поэтому я добавил драгоценный камень date_validator .
gem install date_validator
А затем я смог добавить соответствующую часть в свою модель, и все сработало, как ожидалось — недопустимые даты были отклонены.
Однако я также попытался добавить этот драгоценный камень в свой Gemfile, что создает следующую ошибку:
/var/www/html/redmine-2.6.5/lib/redmine/core_ext/active_record.rb:42:in `<top (required)>': DateValidator is not a class (TypeError)
Почему это происходит? Я не понимаю…драгоценный камень работает нормально — удаление драгоценного камня из файла Gemfile приводит к тому, что все работает идеально. Итак, почему простое добавление его в Gemfile вызывает проблемы??
Вот мой Gemfile:
source 'https://rubygems.org'
gem "will_paginate", "3.1.0"
gem "nested_form", "0.3.2"
gem "date_validator", "0.9.0"
gem "rails", "3.2.21"
gem "jquery-rails", "~> 3.1.1"
gem "coderay", "~> 1.1.0"
...
...
Комментарии:
1. Можете ли вы опубликовать свой Gemfile?
2. Вы запускали bundle после того, как поместили его в свой Gemfile? Вы пробовали удалить gemfile. заблокировать, а затем повторно связать?
3. Под «запустить пакет» вы подразумеваете установку пакета? Или обновление пакета? Я сделал оба, но это не помогло. Я просто попытался удалить блокировку gemfile и повторно запустить bundle install, но это не сработало.
Ответ №1:
2.2.0 :022 > module Me
2.2.0 :023?> end
=> nil
2.2.0 :024 > class Me
2.2.0 :025?> end
TypeError: Me is not a class
from (irb):24
у драгоценного камня date_validator есть модуль с именем ‘DateValidator’ https://github.com/codegram/date_validator/blob/master/lib/date_validator.rb
И у redmine gem есть класс с именем ‘DateValidator’https://github.com/redmine/redmine/blob/master/lib/redmine/core_ext/active_record.rb
В вашем случае date_validator gem загружается правильно и создает модуль, но redmine не может определить класс с тем же именем.