我已经在 rails 3.2.11 中添加了 gem 简单导航 3.9.0 到我的 gemfile,它在开发中运行良好。但是,当我部署到我的生产服务器并尝试使用该方法打开页面时,出现以下错误:
undefined method `render_navigation'
不过,我不相信它特定于那颗宝石,因为我之前在使用 uuid 宝石时遇到了同样的问题。
使用 $LOADED_FEATURES,我找到"simple_navigation",所以它似乎已加载。
有关生产服务器的信息
nginx 1.2.6
Unicorn 4.5.0
Rubygems 1.8.23
Ubuntu 12.04 LTS
rbenv 0.4.0-9-g045f6c1
编辑
其他 gem 工作,服务器运行良好,除了上述问题。
确保您的 gem 未在 Gemfile 的 development
组中声明
development
组中的宝石不会加载到 production
中。
group :development do
gem "simple-navigation"
end
此外,如果您有<APP_HOME>/.bundle/config
文件,请确保它没有BUNDLE_WITHOUT
选项。
宝石文件
group :ui do
gem "simple-navigation"
end
.bundle/config
---
BUNDLE_WITHOUT: ui
在上面的示例中,将不会加载 gem 组ui
。
话虽如此,我对 Rails 的接触非常非常有限,当 Gemfile.lock 没有提交到存储库中时,我看到了类似的行为。结果,当项目被推向生产环境时,依赖关系解决出现了一些问题。
你试过RAILS_ENV=production bundle install
吗?
虽然从技术上讲不是答案,但我决定切换到Linode作为我的主机。这涉及完全重新安装我的服务器设置,它现在可以工作了。这次我执行了与上次完全相同的步骤安装服务器,所以我仍然不确定出了什么问题,或者它是否很容易修复。由于我不再有可用的旧服务器,因此从现在开始无法确认提出的任何解决方案。
我将把这个答案标记为解决方案,除非在接下来的 48 小时内有任何异议。