我在我的VM (VirtualBox)中安装了MailCatcher。但是,mailcatcher不工作,输出以下错误消息:
`require': cannot load such file -- i18n/core_ext/string/interpolate (LoadError)
似乎i18n没有安装,但我安装了它。
[vagrant@localhost ~]$ gem list i18n
*** LOCAL GEMS ***
i18n (0.7.0.beta1)
我在亚马逊网络服务的EC2中安装了和它一样的东西,它可以工作。
我的虚拟机中发生了什么?
-细节
操作系统: CentOS 6.5
Ruby: 2.1.1,rbenv 0.4.0
完整的错误消息:
[vagrant@localhost ~]$ mailcatcher--http-ip 192.168.33.12
/home/vagrant/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- i18n/core_ext/string/interpolate (LoadError)
from /home/vagrant/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/vagrant/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/activesupport-3.2.19/lib/active_support/core_ext/string/interpolation.rb:2:in `<top (required)>'
from /home/vagrant/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/vagrant/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/vagrant/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/activesupport-3.2.19/lib/active_support/core_ext/string.rb:9:in `<top (required)>'
from /home/vagrant/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/vagrant/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/vagrant/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/activesupport-3.2.19/lib/active_support/core_ext.rb:2:in `block in <top (required)>'
from /home/vagrant/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/activesupport-3.2.19/lib/active_support/core_ext.rb:1:in `each'
from /home/vagrant/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/activesupport-3.2.19/lib/active_support/core_ext.rb:1:in `<top (required)>'
from /home/vagrant/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/vagrant/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/vagrant/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/mailcatcher-0.5.12/lib/mail_catcher.rb:1:in `<top (required)>'
from /home/vagrant/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/vagrant/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/vagrant/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/mailcatcher-0.5.12/bin/mailcatcher:3:in `<top (required)>'
from /home/vagrant/.rbenv/versions/2.1.1/bin/mailcatcher:23:in `load'
from /home/vagrant/.rbenv/versions/2.1.1/bin/mailcatcher:23:in `<main>'
发布于 2015-01-03 00:46:05
综合使用张贴的答案,以下是我想出的解决方案:
我的环境:
我的问题:在我现有的rails项目文件夹中运行gem install mailcatcher
之后,我运行了mailcatcher
并得到:
‘’:无法加载这样的文件-- i18n/core_ext/string/interpolate (LoadError)
我不想在我现有的项目文件夹中更新i18n gem,因为我的项目中的一切都运行得很好。
根据@joostvanrijn的建议,我决定专门为MailCatcher创建一个单独的rails项目文件夹。我将文件夹命名为mailcatcher
。在新创建的/mailcatcher
文件夹中,我运行了gem install mailcatcher
。然后我运行了gem update i18n
,这让我找到了i18n-0.7.0
。最后,我调用了mailcatcher
,它运行得很顺利。
后来,我遇到了MailCatcher的另一个问题:
虽然我可以访问http://127.0.0.1:1080
,但发送电子邮件将失败,并显示
已完成500内部服务器错误
Net::ReadTimeout (Net::ReadTimeout)
我试图通过转到http://127.0.0.1:1080
并单击" quit“来退出MailCatcher,但这只会将我带到http://mailcatcher.me,而不是真正终止进程。
为了终止进程,我使用lsof -i -n -P | grep TCP
查找在127.0.0.1:1025
和127.0.0.1:1080
上运行的进程,并使用kill -9 PID
。
我从这篇Discourse post中了解到,Net::ReadTimeout
是由于MailCatcher中的一个错误造成的,解决方法是使用mailcatcher -f
在前台运行MailCatcher。这解决了我的问题,现在我可以毫无问题地“捕获”电子邮件了。耶!
发布于 2014-10-13 08:23:14
Rails4.2beta/activesupport 4.2.0.beta2依赖于i18n (< 0.8,>= 0.7.0.beta1)。
如果加载i18n的测试版gem,mailcatcher (0.5.12)会抛出你的错误。
如果您使用的不是Rails4.2beta版本,那么可以卸载beta版本
gem uninstall i18n -v i18n-0.7.0.beta1
在gem的多个问题中都引用了这一点。
发布于 2014-11-27 17:42:01
对于任何使用rbenv遇到这个问题的人:我已经找到了一个解决方法。请确保您使用的ruby版本没有安装Rails4.2beta gem。(我有一个较旧的项目,我把它放入其中,从那里安装和运行mailcatcher没有任何问题。
您可能需要创建一个新文件夹(例如,名为" mailcatcher“),使用支持的版本创建一个.ruby版本,以便可以从那里运行mailcatcher
https://stackoverflow.com/questions/25486365
复制相似问题