【问题标题】:Can't Load Rails Server Even Could not find pg-0.17.1 in any of the sourcesCan't Load Rails Server Even 无法在任何来源中找到 pg-0.17.1
【发布时间】:2014-09-19 07:03:30
【问题描述】:

对这一切都很陌生,但遇到了一个真正的沟壑。我用 rails 4.1+ 运行了 ruby​​ 2.0.0p353,一切都是用自制软件、xcode、git、heroku 等设置的……我在 OSX 10.9.4 上

然后是试用 S3 并安装 aws-sdk gem 的时候了。在搜索 stackoverflow 数天无济于事后,我无法安装 nokogiri gem。然后我在网上看到了这篇文章,它建议更新 rails 和 ruby​​ 版本。在尝试将我的 ruby​​ 版本升级到最新版本时,我按照here 给出的说明进行了如下操作:

在终端和我的应用文件夹中:

  1. /usr/local/opt/ruby/bin
  2. export PATH="/usr/local/opt/ruby/bin:$PATH"
  3. 来源 ~/.bash_profile
  4. 宝石更新--系统 ..我随后也尝试了捆绑更新/安装...并在 pastebin 上收到此错误:http://pastebin.com/Q64j0LwD

现在,事情完全搞砸了,因为我什至无法运行 rails 服务器。收到此错误无法在任何来源中找到 pg-0.17.1

我目前安装了 Ruby 2.1.2p95。我不知道在这个试验和错误过程中还安装了什么,不幸的是,许多东西可能有几个版本。任何建议都会很棒。

:在任何来源中都找不到 pg-0.17.1

【问题讨论】:

  • 找不到用于构建pg 的postgres 标头。安装了 PostgreSQL 吗?如果是这样,它是如何安装的?
  • 嗨 Colinm,我相信我刚刚在 group: production do 下添加了 gem 'pg' 在 gemfile 中。
  • 在将pg 添加到您的gemfile 之后,您是否完成了bundle install
  • 嗨 @SachinSingh 是的,我在组中有 gem 'pg' :gemfile 中的生产
  • 如果你在本地运行 Rails 服务器,使用“rails s”,那么你默认使用开发环境。如果 gem 被标记为仅用于生产,那么您没有 pg gem 供开发使用 - 因此开发服务器将失败。

标签: ruby-on-rails ruby postgresql gem nokogiri


【解决方案1】:

尝试postgresapp 并使用documentation 安装和配置postgresql 服务器。

在 Mac 上开始使用 PostgreSQL 的最简单方法

【讨论】:

    【解决方案2】:

    您显然是 Rails 编码的新手。开始的时候我犯了很多错误。我仍然犯了很多错误,但现在它们是更复杂的错误,主要是;)

    我会先使用“RailsInstaller”。获得所有碎片的绝佳方式......除了 Postgres。正如名称由许多非 ASCII 字符组成的人所建议的那样,PostgresApp 对于获得更新的 Postgres 而不会弄乱项目外的编译内容非常有用。

    您可能应该使用“rvm”或“rbenv”来管理您的红宝石。我都试过了,我喜欢rvm。推荐使用 rbenv,但在我决定回到 rvm 之前,我花了半天的时间试图解开键入“bundle exec rails new app”的后果。 rvm 对我来说更自然地工作,但代价是为每个项目创建 gemset。就个人而言,我喜欢。我想隔离我添加到操作系统中的每一个东西,这样我就可以在污染较少的情况下处理多个项目,而不必为每个项目创建一个虚拟机。

    污染是,我认为 Nokogiri 的问题。每个人都告诉你去安装 brew 或 Macports 或者从头开始为自己构建。当你这样做时,你会安装很多东西。这些东西会影响编译过程。我大约 80% 确定我不能用系统库编译 Nokogiri,因为其他项目已经删除了将 iconv_open 重命名为 libiconv_open 的包含文件——这不在本机库中。我现在正在编译 Nokogiri,但这只是因为使用 GNU iconv,并使用神秘的“捆绑配置”为 nokogiri 单独设置构建时间依赖项以使用 iconv 的 /opt/local/include 版本。这很耗时。

    所以,我还没有为自己采纳一些建议。清理 brew/ports 的东西。我怀疑您可以在本地安装的项目目录中运行您需要的任何东西,而不是干扰操作系统。除非你真的需要 Mac 不附带的东西,比如最新的 ruby​​(由 rbenv/rvm 解决)

    查看Heroku。以低成本方式开始发布您的小型应用程序。

    确保您拥有GitHubBitBucket 帐户。我个人在 GitHub 上为项目做出贡献,但我的私人资料在 BitBucket - 定价模型上。

    Git 看起来很生气。但是git很棒。学习分支。很多。学会融合。学习标记,并学习如何从上游仓库推送和拉取。这些话现在对你来说可能毫无意义,但它们会拯救你的理智。您将使用 git 将您的项目推送到 Heroku。简直太神奇了。了解如何拥有一个暂存分支和一个实时分支,并将每个分支推送到不同的 Heroku 实例,这样您就可以在面向公众的服务器上测试用户接受度,而不会污染开发或实时版本。 Git/Heroku。快乐。

    注意一些让我痛苦的事情... Ruby 有很多补丁。它们是有意义的。我花了几天时间试图找出一段 ruby​​ 代码失败的原因,却发现它在不同的补丁级别上工作。注意更新并应用它们——“捆绑更新”除外。在您年老且有智慧之前,请勿进行“捆绑更新”。

    Gem 版本 - 这也让我很生气。得到了一个有效的项目。然后它没有,根本没有代码更改......除了我更新了我的宝石。更高版本的 gem 扰乱了代码。所以...

    Bundler 是你的另一个朋友。锁定项目所需的 gem 版本。除非您准备好应对奇怪的事情发生,否则不要使用“捆绑更新”。制作漂亮的 Gemfile。

    您可能需要掌握 TDD,最好是 BDD。

    接下来您需要安装Qt 库,并使用“gem 'capybara-webkit'”和Cucumber 和Rspec-Rails 来帮助您编写浏览器将执行的测试。 Butt saver central,如果您开始更改 gem 版本。至少您知道测试何时停止工作,并且可以使用 git 恢复到已知的工作块。更重要的是,当某些东西意外停止工作时,它最终可以省去大量乏味的检查。

    另外...确保您的 gems 开发组(在 Gemfile 中)包括“better_errors”和“binding_of_caller”。当您的代码失败时,浏览器窗格中的 REPL 非常棒。

    如果您只想将一些东西放在一起,例如您不想花大量时间改进 UI 的办公室管理项目,而只是构建一些工作的东西。试试“hobo”。我发现它对于快速构建某些东西非常有用。编写代码比规范它或绘制它要快。严重地。而且这一切都可以过度使用,尽管我从来没有将任何 Hobo 代码变成用于大规模使用的东西......

    欢迎来到在 Mac 上使用 Rails 进行开发的奇妙世界。这是一个快速发展的声音。希望有帮助。 :)

    【讨论】:

    • 感谢您的深入回复 JezC 我已经记录了所有参考资料,并将对其进行调查。关于如何卸载我的 mac 中似乎丢失的原始 pg/rails/gems 以便我可以开始新的,你对我有什么建议吗?它们肯定安装在某个地方,哈哈。
    • 没有,正如我所建议的,我自己做的。在接下来的几周内,我将为此牺牲一台 Mac Mini。我会查看 shell 登录配置文件更改(/etc/profile.d/*,和 ~/.bash_rc,~/.profile 等)的一些残留物。然后我会小心 删除/opt/local 和可能的/usr/local。为什么要仔细?因为你那里可能有有用的东西。您可能需要排序的问题是编译 nokogiri 所需的最小更改。除非您有其他依赖 GNU 库的 Mac OS X 项目。
    • 谢谢,我将在周三晚上将我的 mac 展示给一群 ruby​​ 爱好者,看看他们当面说了什么。我会回来更新。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2014-12-25
    • 1970-01-01
    • 2014-11-30
    • 2016-01-02
    • 1970-01-01
    • 2014-03-02
    • 2018-08-01
    • 2013-06-22
    相关资源
    最近更新 更多