捆绑安装后Rails 3 Gemfile Gems未加载
Posted
技术标签:
【中文标题】捆绑安装后Rails 3 Gemfile Gems未加载【英文标题】:Rails 3 Gemfile Gems not Loading After Bundle Install 【发布时间】:2013-05-12 03:30:09 【问题描述】:我正在使用 Ruby v2.0.0 在 Rails 3 中编写一个应用程序。
我在 app/helpers/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
我该怎么做才能让它工作?我对这个问题感到困惑。
编辑:
我还在 rails console
中测试过 Redcarpet:
$ 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"
所以它可以在控制台中工作,而不是在我的助手(或控制器,我也尝试过)中。
【问题讨论】:
【参考方案1】:Ruby 正在尝试在 PostsHelper 命名空间中查找 Redcarpet。使用 ::Redcarpet
将其提升到全局命名空间
【讨论】:
我已将两个引用从Redcarpet
更改为 ::Redcarpet
,现在我得到了这个:uninitialized constant Redcarpet
。
如果您在 Rails 控制台中执行 @redcarpet = ...
语句会发生什么?它对我有用。
1) 安装 redcarpet 后是否重启了 rails 服务器? 2)在没有实例变量的情况下尝试它,没有@。 3) 向助手添加要求,不应该需要吗?
我不敢相信。我没有重新启动服务器。哇。感谢您的精彩常识!以上是关于捆绑安装后Rails 3 Gemfile Gems未加载的主要内容,如果未能解决你的问题,请参考以下文章
使用 Elastic Beanstalk 在 Amazon AWS 上为非 Rails ruby 脚本安装 Gems
Rails:Gemfile.lock 需要“找不到捆绑程序”(2.2.11)。 (Gem::GemNotFoundException)
为什么gem`therubyracer`默认在Gemfile中注释掉了?
您的捆绑包被锁定为 mimemagic (0.3.5),但在您的 Gemfile 中列出的任何源中都找不到该版本 [重复]