Capistrano部署期间未定义的方法`action_mailer'

时间:2012-11-18 07:14:39

标签: ruby-on-rails ruby-on-rails-3 rvm capistrano bundler

我在Capistrano部署期间出现此错误消息。这对我来说意味着安装Rails有什么不对吗? Rails当前安装在服务器端,但是它在我的Gemfile(以及我的Gemfile.lock)中,所以我假设它应该在执行的bundle install命令期间安装在此之前。

给出错误的实际命令是:

bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile

我想问题只是在捆绑安装期间没有安装Rails。我错过了什么吗?

谢谢!

更新1: Rails似乎是通过bundle install命令正确安装的。如果我查看目录.../shared/bundle/ruby/1.9.1/gems,我可以在那里看到动作邮件。

更新2:运行命令rake assets:precompile实际上也在本地失败,因此这与Capistrano没有任何关系。现在我只需弄清楚为什么config对象对动作邮件不了解?

更新3:热门。看起来我安装的actionmailer版本是0.6.1(?!),同时我剩下的所有Rails东西都是3.2.9。 bundle update拒绝在此版本之后更新actionmailer。我要删除所有的宝石并重新开始。

更新4 :使用rvm gemset empty删除了我的整个gemset。然后尝试再次运行bundle,再次它试图获得actionmailer 0.6.1。我认为有些事情与捆绑器或其他东西混在一起......

2 个答案:

答案 0 :(得分:1)

问题最终是我在Gemfile中删除了对特定版本的Rails的依赖。我刚刚在那里gem "rails"。这似乎完全破坏了依赖计算,因为它获得了超级旧版本的动作邮件,而不是从所有宝石获得一致的版本。猜猜不指定精确的Rails版本是个坏主意。糟糕!

答案 1 :(得分:1)

@aardvarkk,

感谢发布此问题,我在安装Rails 4.0.0时遇到了同样的错误,错误导致我无法运行我的rails服务器

这时我正在尝试遵循RoR的Hartl教程。

我将gem "rails", '4.0.0'添加到我的gem文件中,现在我可以运行我的rails服务器了。

谢谢