我正在尝试在某个地方免费托管一个 Ruby on Rails 应用程序,而 Heroku 看起来像是我的最后一个资源。它应该可以在 Linux 上运行,并且 gem 安装时没有错误,但是每当我运行任何 Heroku 命令时,它都会吐出几个错误,所有错误都是连接的,并且谈论失败的“要求”。我在代码中查看了它,它说:
require 'readline'
这就对了。
我尝试安装所有我能找到和想到的 libreadline 变体,但没有任何区别。这里有什么想法吗?
我正在尝试在某个地方免费托管一个 Ruby on Rails 应用程序,而 Heroku 看起来像是我的最后一个资源。它应该可以在 Linux 上运行,并且 gem 安装时没有错误,但是每当我运行任何 Heroku 命令时,它都会吐出几个错误,所有错误都是连接的,并且谈论失败的“要求”。我在代码中查看了它,它说:
require 'readline'
这就对了。
我尝试安装所有我能找到和想到的 libreadline 变体,但没有任何区别。这里有什么想法吗?
可能是您系统安装的 Ruby 版本没有使用 readline 支持构建。如果是这样,那么您可以从源代码重新安装它并configure
为 readline 支持选择正确的参数。这不仅令人讨厌,而且意味着您必须自己手动维护更新。
更好的是完全放弃您的系统 Ruby,转而使用安装了RVM的系统
安装libreadline-dev
$ sudo apt-get install libreadline-dev
安装一个 ruby 版本(例如 1.8.7)
$ rvm install 1.8.7
$ rvm --default 1.8.7
在 RVM ruby 下安装你的 rails 和 Heroku gems
$ gem install rails heroku taps ...
# 注意没有 sudo!
看看你的问题是否仍然存在
如果是这样,请执行以下操作:
$ cd ~/.rvm/src/ruby-1.8.7-p299/ext/readline
$ ruby extconf.rb
$ make
$ make install
Ubuntu 的ruby-full 包依赖于 libreadline-ruby 并且应该包含你和它需要的所有东西。如果您尝试通过安装一堆单独的软件包来安装 ruby,您可能会遗漏一些东西。如果是这种情况,请返回并安装 ruby-full。
每当我安装最新的 Ubuntu 时,我都有一个用于重建 Rails 环境的脚本。它还安装了 Heroku(我托管我的应用程序的地方)所需的一切。您可能想看看它,看看是否有任何您遗漏的东西。
如果 ruby-full 不能解决你的问题,我会同意 Bjg 的建议,并放弃 RVM 的系统 ruby。
我让它工作了,但它是一个黑客。我从它的安装位置(在某个奇怪的地方)找到了 readline.so 文件,并做了一个硬链接到 ruby 正在寻找 readline 的位置,并且它有效。不是最佳的,下次我一定会尝试你们推荐的。谢谢!