有一個包含「列表」的應用程序 - 認爲是分類廣告 - 每個列表都有一個標籤列表。生產環境中運行RoR應用程序的問題
當我運行在生產模式下的應用程序下面的代碼會失敗,但在開發模式
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",
我使用開始我的雜種比如在這個測試用例命令行正常工作: Ruby腳本/ server mongrel -e production
默認爲端口3000.我可以在應用中訪問其他視圖請勿調用「listing.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...
}
這幾乎肯定與cache_classes設置有關。要縮小範圍,如果關閉生產中的類緩存會發生什麼情況?另外,你使用的是什麼版本的Rails? –
如果刪除並重建數據庫,則可能會在開發機器上顯示該錯誤。我經常遇到這樣的問題,這是因爲開發數據庫包含的舊條目滿足應用程序的某些需求,但生產數據庫不包含它們,因爲它是新鮮的。有時候隨着應用程序的增長,我們改變代碼的方式是,當數據庫爲空時它會失敗,如果其他所有的失敗都只是一個黑暗的鏡頭。 – stephenmurdoch
另外,你有什麼樣的測試(特別是集成)?如果您的測試足夠並且通過了 – stephenmurdoch