Проблема с запуском приложения RoR в производственной среде - PullRequest
4 голосов
/ 12 марта 2010

Имейте приложение, у которого есть "списки" - думайте классифицированные объявления - и у каждого перечисления есть список тегов.

Следующий код завершается ошибкой, когда я запускаю приложение в производственном режиме, но отлично работает в режиме разработки

uninitialized constant ActiveRecord::Acts::Taggable::InstanceMethods::TagList
Extracted source (around line #45):

42:         
43:         <span class="listingIndexTags">
44:             Location: [location] | Tags:
45:             <% tag_list = listing.tag_list %>
46:             <% if tag_list != nil %> 
47:                 <% for tag in tag_list %>
48:                     <%= link_to tag.to_s, { :action => "filter_on",

Командная строка, которую я использую для запуска моего экземпляра mongrel в этом тестовом примере: скрипт ruby ​​/ серверный монгрел -e производство

По умолчанию используется порт 3000. Я могу получить доступ к другим представлениям в приложении, которые НЕ вызывают "перечисление.tag_list".

". Tag_list" предоставляется "acts_as_taggable_on_steroids", который я использую в этом приложении. Он установлен как драгоценный камень.

Может быть, файлы моего окружения плохие?

Вот мой файл development.rb

config.cache_classes = false

config.whiny_nils = true

config.action_controller.consider_all_requests_local = true
config.action_view.debug_rjs                         = true
config.action_controller.perform_caching             = false

config.action_mailer.raise_delivery_errors = true

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  ...took these settings out for this post...
}

И мой файл production.rb ...

config.cache_classes = true
config.threadsafe!  

config.action_controller.consider_all_requests_local = false
config.action_controller.perform_caching             = true

config.cache_store = :mem_cache_store

config.action_mailer.raise_delivery_errors = false

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  ...took these settings out for this post...
}

Ответы [ 3 ]

1 голос
/ 28 марта 2010

ИСПРАВЛЕНО:

Что ж, после того, как я отложил исправление этой ошибки до тех пор, пока мне абсолютно не пришлось (сегодня), я наконец нашел источник проблемы.

Включение строки: config.threadsafe!

В моем файле "production.rb" это было вызвано.

I finally found it by:
    1. Making my production and development environment files identical
    2. Line-by-line, changing the production environment file until it either:
      a. The app broke in production mode
      b. I was back to my original production file

Во всяком случае, когда я дошел до добавления "config.threadsafe!" линия - ЭТО СДЕЛАНО! Я никогда не был так счастлив, чтобы перерыв приложения.

Итак, небольшое прочтение, чтобы понять, что именно делает этот параметр, в сочетании с Mongrel (если Mongrel даже актуален), и я получу ответ.

1 голос
/ 14 июня 2010

Пришел сюда с той же проблемой и просто хотел дать записку всем, кто испытывает то же самое ... Мне удалось решить эту проблему, исправив версию gems в environment.rb

изменил это
config.gem "actions-as-taggable-on",: source => "http://gemcutter.org"

к этому:
config.gem "actions-as-taggable-on",: source => "http://gemcutter.org",: version => '2.0.0.rc1'

и запускаем грабли гемов: устанавливаем

Интересно, запускали ли вы как-то разные гемы в разных средах, если это возможно.

0 голосов
/ 12 марта 2010

Есть ли у вас на рабочем сервере установлен acts_as_taggable_on_steroids гем?

...