Проблема с Rails при перезагрузке гемов и плагинов в режиме разработки - PullRequest
1 голос
/ 14 января 2010

Я делаю небольшое приложение для создания прототипа. Я начал с использования стартерапа под названием basejumper

После быстрого старта я наткнулся на очень досадную проблему. В режиме разработки rails вылетает после второго запроса, т.е. при первой загрузке страницы все работает нормально, перезагрузка страниц вылетает с

"You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.include?"

Эта проблема возникает при попытке получить доступ к объекту пользователя через ассоциативную принадлежность. В представлении я делаю что-то вроде этого, это comment.user.login, который разрушает представление:

<% @article.comment_threads.each do |comment| %>
  <div class="comment">
     <%=h comment.body %> | Posted <%=time_ago_in_words(comment.created_at)%>ago
        by <%= comment.user.login %>.</div>
<% end%>

Мои занятия:

class User < ActiveRecord::Base
  acts_as_authentic
  has_many :articles
  has_many :comments

class Comment < ActiveRecord::Base
  acts_as_nested_set :scope => [:commentable_id, :commentable_type] 
  belongs_to :user

class Article < ActiveRecord::Base
  belongs_to :user
  belongs_to :innovation_target
  acts_as_commentable

Когда в моем конфигурационном файле development.rb я ставлю

config.cache_classes = false

проблема исчезает, но оставляет меня с сервером, который мне нужно перезапускать после каждого изменения, что в принципе не работает. Я использую рельсы 2.3.4.

Итак, мой вопрос, могу ли я как-то заставить rails перезагрузить некоторые / все гемы и плагины в режиме разработки, чтобы эта проблема исчезла? Или вы видите другие возможности? Я использую много различных плагинов и драгоценных камней, включая, например, activ_as_commentable_with_threading, awesome_nested_set и другие.

Спасибо за вашу помощь.

пс. Я уже просматривал статьи типа http://www.williambharding.com/blog/rails/automatically-reload-modules-on-change-in-rails/ и http://nhw.pl/wp/2009/01/07/reloading-your-plugin-in-development-mode, но они не кажутся обманом (или я делаю что-то не так.)

1 Ответ

1 голос
/ 15 января 2010

После долгих поисков и проверки трассировки стека мне удалось решить эту проблему: В статье http://209.85.129.132/search?q=cache:82jRiVpdYGcJ:www.theirishpenguin.com/2009/01/22/bug-of-the-day-nilinclude-error-with-create_time_zone_conversion_attribute/+create_time_zone_conversion_attribute%3F&cd=1&hl=nl&ct=clnk&gl=be&client=firefox-a (приходится использовать кеш гугл, страница на данный момент не загружается) описана похожая проблема. В комментариях пользователь stef предлагает изменить в файле configuration.rb

config.time_zone = ‘UTC’
to:
config.active_record.default_timezone = :utc

На маяке существует задокументированная проблема с рельсами, описывающая это: https://rails.lighthouseapp.com/projects/8994/tickets/1339-arbase-should-not-be-nuking-its-children-just-because-it-lost-interest

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...