Ruby on rails rails控制台中分区的奇怪行为
2台服务器(安装了相同的gems,完全相同的ruby版本Ruby on rails rails控制台中分区的奇怪行为,ruby-on-rails,ruby,Ruby On Rails,Ruby,2台服务器(安装了相同的gems,完全相同的ruby版本2.2.2p95 发展 Loading development environment (Rails 4.0.13) [1] pry(main)> (1/3).class => Fixnum [2] pry(main)> (1/3) => 0 [3] pry(main)> 生产 Loading production environment (Rails 4.0.13) 2.2.2 :001 >
2.2.2p95
发展
Loading development environment (Rails 4.0.13)
[1] pry(main)> (1/3).class
=> Fixnum
[2] pry(main)> (1/3)
=> 0
[3] pry(main)>
生产
Loading production environment (Rails 4.0.13)
2.2.2 :001 > (1/3).class
=> Rational
2.2.2 :002 > (1/3)
=> (1/3)
2.2.2 :003 >
什么?这两个环境之间唯一的区别是一个使用rvm(生产),另一个不使用Ok。问题是由于使用
mathn
模块的依赖项gem,现在尝试找出哪个gem是:)我无法复制(1/3)
返回Rational
对象。也许您在Gemfile
的:production
组中的gem中,或者在一些if Rails.env.production?
条件逻辑中,有一些不寻常的猴子补丁?!显然,我发现mathn
模块是在生产环境中加载的,而不是在开发环境中加载的,我怎样才能找到哪个gem需要它呢?@Davidmathn
在标准库中,所以它不会在Gemfile.lock
中。lock文件中没有gem需要它,但服务器手动安装了一些gem(不要问为什么…)因此,我可以依赖于gempath中类似于grep-rnw.'-e“require'math”
的东西吗?因为这个命令被发现了nothing@kitensei啊,当然!该库实际上将Integer#/
重新定义为Integer#quo
的别名。即1.quo(3)==(1/3)
。你到底在找什么?您可以尝试类似于bundle show rails
的方法来查看捆绑的gems(可能是rvm gemset?)的文件夹。不管它值多少钱,您并不是第一个因为需要mathn
而对这一意外的全局变化感到惊讶的人!该库从ruby 2.2开始使用,现在从2.5版(将于下个月发布)开始使用。