Ruby on rails 关于PGSQL错误所需的brew安装与捆绑安装的说明。(如何使我的PGSQL工作)

Ruby on rails 关于PGSQL错误所需的brew安装与捆绑安装的说明。(如何使我的PGSQL工作),ruby-on-rails,ruby,postgresql,Ruby On Rails,Ruby,Postgresql,我有一个rails应用程序,我正在尝试运行测试。在我能够运行rake测试的前一天:所有的都成功了,一切都井然有序。今天,当我运行rake test:all时,我收到以下错误: 我知道这个错误的含义,知道如何根据pg_hba.conf连接等解决这个错误。我已经做了一次又一次,没有任何问题 然而,我发现真正的根本问题是我的Postgresql已经升级到9.4,但我的应用程序需要9.3。运行brew info postgresql可以获得如下输出: 基本上,输出是说我需要升级到9.4,9.3特定配

我有一个rails应用程序,我正在尝试运行测试。在我能够运行
rake测试的前一天:所有的
都成功了,一切都井然有序。今天,当我运行
rake test:all
时,我收到以下错误:

我知道这个错误的含义,知道如何根据pg_hba.conf连接等解决这个错误。我已经做了一次又一次,没有任何问题

然而,我发现真正的根本问题是我的Postgresql已经升级到9.4,但我的应用程序需要9.3。运行
brew info postgresql
可以获得如下输出:

基本上,输出是说我需要升级到9.4,9.3特定配置不再更新(如下所示)

所以,现在背景信息已经排除,这就引出了我真正的问题。解决这个问题的“正确”方法是什么

作为一名相对较新的ruby/rails开发人员和程序员,我总是有人来帮助安装我的环境,而且从来没有真正深入到系统安装层和幕后发生的事情。我知道我不能也不应该再拖延了,所以在读了几篇关于这个主题的文章之后,这就是我遇到的

以及一些与主题相关的堆栈溢出问题

就我的Postgresql问题而言,所有这些之间的区别是什么

例如,根据自制的文章,通过运行
brew info postgresql,我可以推断有人将postgresql安装到了我的Mac电脑上,不知何故,我现在使用的是9.4而不是9.3(尽管据我所知,我从未键入
brew update或upgrade`)

那么这是否意味着我的MAC系统上安装了PGSQL?那么Gemfile和Gemfile.lock呢

根据捆绑机文档

Bundler通过跟踪和安装所需的确切gems和版本,为Ruby项目提供了一致的环境

Bundler是一个从依赖地狱中退出的工具,它可以确保您的gems 需求存在于开发、分段和生产中。启动 项目的工作与捆绑安装一样简单

如果是这样,为什么我的bundle安装没有解决这个问题?
pg0.18.1
不是应该为我安装PGSQL吗?为什么我必须brew安装postgresql并捆绑安装postgresql

为了让事情变得更加混乱,bundler文档指出,为了使用bundler,您必须执行
gem install bundler
。这个
gem install
命令是什么,它与其他命令有何不同,为什么我不能
brew安装bundler

(我知道brew没有要安装的绑定器公式,但理论上为什么不能安装?)

在“为什么应该使用RVM以及如何在MAC上安装Ruby”一文中,该指南再次指出,RVM用于安装Ruby的多个版本,使其易于在不同版本之间切换,以及安装需要运行
gem install
的gems。但是,如果bundle安装为我这样做,为什么我需要这样做呢?如果我可以使用gem安装,为什么还要使用bundle安装

我知道这篇文章中有很多问题,但是一个解释会很好,这样我就可以理解如何处理我遇到的这个Postgresql问题。在我看来,我要么把我所有的9.3数据都转储到9.4中,要么想办法把它降级回9.3。如果我知道这些运动部件在做什么来确定如何接近这一点,这将更容易


万分感谢所有愿意回答这个问题的人。我知道我应该在一段时间前学会这一点,但晚一点总比没有好。非常感谢

您在这里有很多问题,我将尽我最大的努力概述这里的所有活动部分,以及解决您的psql问题的一些解决方案

首先,一些背景:

红宝石

这些包包含您希望应用程序使用的ruby代码,例如rails、psql和bundler。就postgres gem而言,您正在安装一个连接到postgres的库。此gem不会为您安装postgres。要安装gems,您可以运行
gem install gem\u name

捆绑机

一个基本上为您调用
gem install gem_name
的库,用于gem文件中列出的每一个gem。它会检查您的每个gems依赖项,并尝试智能地使用您指定的版本或其他gems所需的版本

RVM

想象你在做两个项目。第一个是一个使用ruby 1.8.7的遗留应用程序,另一个是一个使用ruby 2.2的新pet项目。遗留应用程序有很多gem依赖项,这些依赖项可能在较新的ruby版本上工作,也可能不工作,因此您希望为每个ruby版本隔离您的环境。RVM允许您根据需要安装任意多个ruby版本,每个版本都有一个单独的环境。设想RVM类似于虚拟机。你想让Mac OSX和linux都安装在你的计算机上,但你想让它们“分开”,这样它们就不会互相碰撞

自制

这是一个应用程序,它可以用一种更简单的方式在Mac上安装软件包。一般来说,RubyGems只能包含ruby代码,所以当您想安装postgres时会发生什么,我假设它是用C编写的?您可以使用
brew install psql
让自制软件为您安装它

回到你手头的问题:

您通过自制正确安装了postgres,并运行bundler安装了运行项目所需的所有gem(包括psql gem)。你的问题是你有一个项目