新手问题 进入 rails console 报 ruby 解释器错误

lwd369 · 2016年09月29日 · 最后由 biedalian 回复于 2017年07月01日 · 3701 次阅读

ruby 新人一枚。。最近碰到一个奇怪的问题

在运行完 rails 生成器生成模型/控制器等文件后,再进入沙盒环境的 rails conosle 就会报 ruby 解释器错误:

rails g model User name:string
rails console --sandbox

#抛出错误
#上方行数太多了,terminal无法显示完全
.
.
.
.
 1558 /Users/x/.rvm/gems/ruby-2.3.1/gems/railties-5.0.0.1/lib/rails/commands/console_helper.rb
 1559 /Users/x/.rvm/gems/ruby-2.3.1/gems/railties-5.0.0.1/lib/rails/commands/console.rb
 1560 /Users/x/.rvm/gems/ruby-2.3.1/gems/railties-5.0.0.1/lib/rails/console/app.rb
 1561 /Users/x/.rvm/gems/ruby-2.3.1/gems/railties-5.0.0.1/lib/rails/console/helpers.rb

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

如果运行完数据库迁移,在 rails console 里创建一个模型实例也是抛出一样的错误。

rails g model User name:string
rails db:migrate

rails console
Running via Spring preloader in process 56859
Loading development environment (Rails 5.0.0.1)
2.3.1 :001 > User.new

#抛出错误
.
.
.
 1574 /Users/x/.rvm/gems/ruby-2.3.1/gems/activerecord-5.0.0.1/lib/active_record/relation/batches.rb
 1575 /Users/x/.rvm/gems/ruby-2.3.1/gems/activerecord-5.0.0.1/lib/active_record/relation.rb
 1576 /Users/x/.rvm/gems/ruby-2.3.1/gems/activerecord-5.0.0.1/lib/active_record/associations/collection_proxy.rb
 1577 /Users/x/.rvm/gems/ruby-2.3.1/gems/activerecord-5.0.0.1/lib/active_record/association_relation.rb

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

不确定是不是升级到 macOS10.12 造成的?我发现升级后系统自带的 ruby 版本变成了 2.3,但也有同事升级 10.12 后 ruby 版本依旧是 2.0

折腾了好久,整个 ruby 环境基本上也按站内的 wiki 重新安装了一遍,但依旧有这个问题,不知道有什么办法可以解决吗?

再不行是不是干脆全新安装一遍 macOS10.12 算了囧

一般都是 Ruby 当前编译的版本与操作系统版本不同造成的。这个问题很可能跟 macOS 10.12 有关。

重新编译应该是 ok 的。你可以试试。最好用的 rbenv 来处理

#1 楼 @lyfi2003 我用 rvm 可以吗?刚刚用 rvm 下载编译了 ruby2.3,和 OS 保持一致了。不过还是抛出同样的错误.. rvm 和 rbenv 能共存么..

#1 楼 @lyfi2003 删除了 rvm,用 rbenv 安装了 ruby2.3 也还是老样子😰

#3 楼 @lwd369 可能真遇到 ruby 与 macOS 10.12 的 bug 了。

正在用 10.12 和 ruby 2.3.1 完全没问题。试试先 spring stop?

#5 楼 @mengqing 有效!非常感谢🙏 不过每次运行完生成器或者迁移都需要 spring stop 一下才可以,否则也是报错 不知道是啥原因

#5 楼 @mengqing 我把 spring 的 gem 给移除掉了后就没这个问题了😳 移除 spring 没什么影响吧?

OS X 10.12 也遇到了同样的问题,移除 spring gem 后解决了。@lwd369 @mengqing 十分感谢!

rails 5 今天同样碰到这样的问题。spring stop 也解决了。谢谢

搬砖 from 全栈营 leo--整体解决思路:

“ 1.打开你项目里的 Gemfile 文件 2.注释其中两行代码(禁用 spring) 注释 gem "spring" 注释 gem "spring-commands-rspec" ”

需要 登录 后方可回复, 如果你还没有账号请 注册新账号