【问题标题】:segmentation fault when trying to start rails尝试启动 rails 时出现分段错误
【发布时间】:2013-07-23 20:06:24
【问题描述】:

当我的互联网连接中断时,我正在控制台上运行“rails 服务器”。

当我尝试运行 rails 时,我遇到了分段错误。

当我执行时

轨道服务器

rails dbconsole

我得到 /usr/local/rvm/gems/ruby-2.0.0-p247/gems/sqlite3-1.3.3/lib/sqlite3/sqlite3_native.so:[BUG] 分段错误

我从我的 Gemfile 中注释掉了 sqlite,然后成功启动 rails 服务器然后停止它。然后我取消注释 sqlite 并启动 rails 服务器。现在似乎一切正常。

谁能解释发生了什么?我应该担心这个。如果再次发生这种情况,我该怎么办?

我正在运行 ruby​​ 1.8.7 和 rails 3.0.5

【问题讨论】:

  • 看起来更像是在运行 Ruby 2.0.0-p247。
  • 你安装了sqlite的原生库吗?
  • 戴夫:好眼力!我没有注意到 gem 路径中的 2.0.0-p247 引用。我不知道——我显然没有使用 Ruby 2.0。这可能是问题吗?不知何故安装了错误的gem

标签: ruby-on-rails ruby sqlite rvm


【解决方案1】:

问题似乎是因为您的环境配置不正确,您写道您使用ruby 1.8.7,但他的错误来自ruby-2.0.0-p247,当您的shell初始化文件在RVM之后重置/重新配置PATH时会发生这种情况加载。一次性修复它:

rvm use 1.8.7 --install

长期修复它:

rvm get stable --auto-dotfiles

并确保阅读所有输出,如果可以自动修复问题,RVM 会向您发出警告。

问题解决后,为应用安装 gems:

bundle install

并再次尝试运行应用程序:

rails s

除了配置错误之外,我建议您更新您的 ruby​​,因为它是非常旧的 ruby​​,不再受支持并且不会获得安全更新,所以不要使用第一个命令:

rvm get stable
rvm use ruby --install --default --ruby-version

RVM 将名称 ruby 解析为 ruby​​ 的最新已知版本,--install 将告诉它在丢失时安装 ruby​​,--default 将将此 ruby​​ 设置为默认值,--ruby-version 将生成 .ruby-version 文件将目录更改为应用程序文件夹时加载选定的 ruby​​(使用 cd)。

【讨论】:

  • 是的,看起来它正在加载一个针对不同版本的 ruby​​ 编译的 gem,因此当它尝试加载它时会出现段错误...
【解决方案2】:

不再支持 Ruby 1.8.7 并且不会获得任何安全更新,您应该尽快更新:

rvm use --install 2.0.0

安装应用程序 gem:

bundle install

然后再次启动 rails:

rails s

【讨论】:

  • 有人会在意解释为什么被否决 - 我想避免再次给出不好的建议
  • 您的回答没有回答问题(尽管这可能是个好建议)。
  • 这种问题没有很好的答案,你需要挖掘很长时间才能得到信息 - ruby​​ 没有正确使用,你需要使用该步骤来修复它
  • 嘿mpapis。我无法解释为什么人们不赞成你。但我可以解释为什么你的答案是一种无益的答案。这是一个完全的主题变化。当有人运行旧的不受支持的软件时,可能有很多原因。一个好的答案将首先认真对待人们的问题,也许作为旁注建议升级。而且,最终,如果这个问题“没有一个好的答案”,那么你在回答什么?如果这个问题确实“有一个很好的答案”,那我就全神贯注了!
猜你喜欢
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
  • 2015-08-27
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 2017-05-06
  • 1970-01-01
相关资源
最近更新 更多