2011-06-30 35 views
4

我在编程的第12小时,所以我可能会忽略简单的东西,但在这个问题上的任何建议?rails:NoMethodError仅在生产

我app_helper

我加了一个模块一个隆重的接待滤波器HAML

module Haml::Filters::Redcarpet 
    include Haml::Filters::Base 
    include ActionView::Helpers::TagHelper 

    def render(text) 
    options = [:autolink, :smart, :hard_wrap, :no_intraemphasis] 
    content_tag(:div, Redcarpet.new(text.to_s, *options).to_html.html_safe, :class => "markup") 
    end 
end 

发展的伟大工程。但在生产中,这是投掷

[ !EXCEPTION! ] NoMethodError: undefined method 'content_tag' for Haml::Filters::Redcarpet:Module 

为什么会这样?或我可以检查什么?我甚至在生产中运行了控制台,并且能够包含TagHelper并使用这些方法。困惑...

+0

请发布您的/config/environments/production.rb和development.rb文件 - 这两个环境之间可能存在差异,导致该问题。 – jefflunt

+0

我搭上了2个配置的贴子。 http://pastie.org/2142973 – brewster

+0

另外,开发环境是OSX/WEBrick,生产是Debian/Passenger – brewster

回答

1

我的猜测是,您的开发环境在生产环境中拥有不同版本的一个或多个宝石。在两者中做“宝石列表”并将结果添加到原始文章中。

避免此问题的最佳方法是使用Ruby版本管理器(RVM)和'bundler'gem:您可以创建特定于您的项目的gemset,从而确保两个版本的gem完全相同(产品&开发)的项目。

RVM:https://rvm.io

捆绑:http://gembundler.com/

哦 - 如果你往下看你的堆栈跟踪,你可能会看到,设置了HAML /隆重的接待东西宝石的参考,这可能是罪魁祸首,即有不同的版本。