我正在尝试设置rails项目,我必须使用rake db:create
命令来创建数据库。但是,使用此命令会导致出现此错误的Segmentation Fault错误:
/home/steven/.rvm/gems/ruby-2.2.1/gems/json-1.8.3/lib/json/ext/parser.so: [BUG] Segmentation fault
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-linux]
然而,当我运行命令bin/rake db:create
时,我没有得到分段错误。我google了,找不到原因,有谁知道这个问题的原因是什么?这是一个严重的问题吗?
经过进一步测试,这似乎是rake
命令的问题。仍然不确定是什么导致了这一点。
修改
运行which -a rake
命令会出现
/home/steven/.rvm/gems/ruby-2.2.1/bin/rake
/home/steven/.rvm/rubies/ruby-2.2.1/bin/rake
/usr/local/bin/rake
运行which ruby
给出
/home/steven/.rvm/rubies/ruby-2.2.1/bin/ruby
答案 0 :(得分:1)
编辑:此页面看起来有答案:您需要重新加载/重新安装ruby。
Issue with json 1.8.1 gem in rails app on production
从你上面所说的,我可以看到你正在使用rvm。看起来默认rake的gemset是ruby-2.2.1,但是有一个涉及ruby 1.9.3p484的错误。这是一个问题
假设您想将ruby 1.9.3p484用于您的项目。从项目目录中运行rvm use 1.9.3p484
,它应该切换PATH变量以设置正确的东西。
要查看有关您正在使用的rake可执行文件,可用内容以及Ubuntu搜索rake可执行文件的目录顺序的更多详细信息,您可以使用
which -a rake
- >列出PATH上所有可能的rake可执行文件echo $PATH
- >显示PATH变量,其中包含Ubuntu搜索的所有目录which rake
- >显示默认使用的佣金现在,bin/rake db:create
的工作原因是因为它是正确版本的ruby。要正确设置,您需要执行rvm use命令。
对我来说,当我cd到rails目录时,正确的rvm gemset会自动切换到。我忘了它在Ubuntu上是如何工作的,但我确实知道一个线索:你需要在登录shell中。您可以键入su - steven
切换到登录shell,但在Gnome Terminal首选项中可能会有一些关于确保您在登录shell中的内容。
如果您已经在登录shell中,但它无法正常工作,您还可以添加
export PATH=/home/steven/.rvm/rubies/ruby-1.9.3p484/bin:$PATH
到/home/steven/.bashrc
和/或/home/steven/.bash_profile
文件(我永远不记得是哪个)。
为什么这不起作用有很多原因,所以请随意评论更多细节或更新您的问题,我会看看我是否可以提供更多想法。 - 列出项目