Deploying a Rails app: Uninitialized constant Haml::Filters::Markdown

Hello all,

I already posted this question on stackoverflow.com, but I figured there would be more people that could help me here, so I'm posting to this list as well.

I am in the process of deploying a Rails application (that works fine in development) to a new production server running Apache and Passenger (with Ruby Enterprise Edition). When I navigate to the main page, I get the following in my production.log (along with a 500 Internal Server Error from Apache):

ActionView::TemplateError (uninitialized constant Haml::Filters::Markdown) in app/views/sessions/new.haml

I have the haml and RedCloth gems installed:

*** LOCAL GEMS *** [...] haml (3.0.18) RedCloth (4.2.3)

That constant is defined when I refer to it in a Rails console:

# script/console production Loading production environment.

Haml::Filters::Markdown

=> Haml::Filters::Markdown

The problem doesn't occur in development, and the gems installed and codebase are the same as far as I can tell. Any idea what is causing this?

How are you loading the haml gem? If you are loading it at the bottom of environment.rb (outside the Rails::Initializer.run block ) then the gem is loaded after rails preloads your application code. This preload only happens in production mode, which is why it doesn't matter in development

Fred

Thanks for the info. I poked around, and see that haml is installed as a plugin, not a gem (all the files are in vendor/plugins/haml). It sounds like all you should have to do then is name files *.haml and it should work (ruby - How do I get Haml to work with Rails? - Stack Overflow haml-to-work-with-rails).

I should also mention that it not only works in development, but in production mode on another server. I'm actually moving an existing application from one server to another by setting up the environment, moving the codebase over, and deploying it. As far as I know everything is the same on the new server (gems installed, code, etc.), so I don't know why it's not working and am at a loss as to where to start troubleshooting.

Any help is appreciated. Thanks!

After some more investigation, I realized the application/page load just fine when I start them with "script/server production". So the issue has something to do with the way Passenger is setting up the environment, I guess.

Just in case someone comes searching for this, I narrowed down the problem to the BlueCloth gem. Removing the gem removes this problem, installing it again causes it again. That's as far as I was able to get...