2013-05-12 3 views
4

Я пишу приложение в Rails 3 с Ruby v2.0.0.Rails 3 Gemfile Gems не загружается после установки пакета

У меня есть помощник в приложение/хелперов/posts_helper.rb:

module PostsHelper 
    def markdown(text) 
    @redcarpet = Redcarpet::Markdown.new(Redcarpet::Render::HTML, {fenced_code_blocks: true}) unless @redcarpet 
    @redcarpet.render text 
    end 
end 

Мой Gemfile содержит gem 'redcarpet', '~> 2.2' и я запустить bundle install с успехом. Тем не менее, я получаю эту ошибку, когда я пытаюсь загрузить страницу, которая использует этот помощник:

uninitialized constant PostsHelper::Redcarpet 

Что я могу сделать, чтобы получить эту работу? Я озадачен этой проблемой.

Edit:

Я также протестировали Redcarpet в rails console:

$ bundle exec rails console 
Loading development environment (Rails 3.2.13) 
irb(main):001:0> Redcarpet::Markdown.new(Redcarpet::Render::HTML).render('text *markdownified*') 
=> "<p>text <em>markdownified</em></p>\n" 

Так это работает в консоли, просто не в моем помощнике (или контроллер, я пробовал, тоже) ,

ответ

2

Ruby пытается найти Redcarpet в пространстве имен PostsHelper. Используйте ::Redcarpet, чтобы поднять это в глобальное пространство имен

+0

Я изменил две ссылки из «Redcarpet» на «:: Redcarpet», и теперь я получаю это: 'uninitialized constant Redcarpet'. –

+1

Что произойдет, если вы выполните этот оператор '@redcarpet = ...' в консоли Rails? Меня устраивает. –

+0

Читайте свой ум. Проверьте мое редактирование. –