- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Rails 应用程序,我正在尝试对其运行测试。在我能够成功运行 rake test:all
的前一天,一切都井井有条。今天,当我运行 rake test:all
时,我收到了这个错误:
我知道这个错误是什么意思,也知道如何根据 pg_hba.conf 连接等解决这个错误。我已经做了一次又一次,没有遇到任何问题。
但是,我发现真正的潜在问题是我的 Postgresql 已升级到 9.4,但我的应用程序需要 9.3。运行 brew info postgresql
得到如下所示的输出:
基本上,输出是说我需要升级到 9.4 并且不再更新 9.3 特定配置(也如下所示)
所以现在有了背景信息,这就引出了我真正的问题。解决此问题的“正确”方法是什么?
作为一个相对较新的 ruby/rails 开发人员和程序员,我总是有人帮助我安装我的环境,但从未真正深入到系统安装层以及引擎盖下发生的事情。我知道我不能也不应该再拖延了,所以在阅读了一些与该主题相关的文章后,这就是我遇到的情况。
还有一些与主题相关的堆栈溢出问题。
与我的 Postgresql 问题相关的所有这些有什么区别?
例如,根据来自 Homebrew 的文章,通过运行 brew info postgresql,我可以推断出有人在我的 Mac 上安装了 postgresql,不知何故现在我有 9.4 而不是 9.3(尽管据我所知从未打字
酿造更新或升级`)
这是否意味着 PGSQL 安装在我的 MAC 系统上? Gemfile 和 Gemfile.lock 怎么样?
根据打包器文档......
Bundler provides a consistent environment for Ruby projects by tracking and installing the exact gems and versions that are needed.
Bundler is an exit from dependency hell, and ensures that the gems you need are present in development, staging, and production. Starting work on a project is as simple as bundle install.
如果是这样,为什么我的 bundle 安装没有解决差异? pg 0.18.1
不是应该为我安装 PGSQL 吗?为什么我必须 brew install postgresql 和 bundle install postgresql?
为了让事情变得更加困惑, bundler 文档指出,为了使用 bundler ,您必须执行 gem install bundler
。这个 gem install
命令是什么,它与其他命令有何不同,为什么我不能 brew install bundler
?
(我知道 brew 没有要安装的捆绑程序公式,但理论上为什么不能这样做?)
再一次,在“为什么应该使用 RVM 以及如何在 MAC 上安装 Ruby”中,该指南指出 RVM 用于安装多个版本的 Ruby,从而可以轻松地在版本之间切换,并安装 gems I需要运行 gem install
。但是,如果 bundle install 为我做了这个,为什么我需要这样做呢?如果可以使用 gem install,为什么还要使用 bundle install?
我知道这篇文章中有很多问题,但最好能有一个解释,这样我就可以理解如何处理我遇到的这个 Postgresql 问题。在我看来,我要么必须将所有 9.3 数据转储到 9.4,要么想办法降级回 9.3。如果我知道这些移动部件正在做什么来确定如何解决这个问题,这会更容易。
对于任何愿意回答这个问题的人,先行致谢。我知道我早就该学了,但后来总比没有好。非常感谢!
最佳答案
你在这里有很多问题,我会尽力概述这里所有的移动部分以及解决你的 psql 问题的一些解决方案。
首先,一些背景:
ruby
这些包包含您希望应用程序 ex 使用的 ruby 代码。 rails 、psql、 bundler 。对于 postgres gem,您正在安装一个连接 到 postgres 的库。这个 gem 不会为你安装 postgres。要安装 gems,您可以运行 gem install gem_name
。
bundler
一个库,它基本上为您的 Gemfile 中列出的每个 gem 调用 gem install gem_name
。它会检查您的每个 gem 依赖项并尝试智能地使用您指定的版本或其他 gem 所需的版本。
RVM
假设您从事 2 个项目。第一个是使用 ruby 1.8.7 的遗留应用程序,另一个是您正在处理的使用 ruby 2.2 的新宠物项目。遗留应用程序有很多 gem 依赖项,它们可能适用于也可能不适用于较新的 ruby 版本,因此您希望为每个 ruby 版本隔离您的环境。 RVM 允许您根据需要安装任意数量的 ruby 版本,每个版本都有一个单独的环境。将 RVM 想象成类似于虚拟机。您希望在您的计算机上同时安装 Mac OSX 和 Linux,但您希望它们是“独立的”,这样它们就不会相互冲突。
自制
一个应用程序,可让您以更简单的方式在 Mac 上安装软件包。一般来说,ruby gems 只能包含 ruby 代码,那么当你想安装 postgres 时会发生什么,我假设它是用 C 编写的?您可以使用 brew install psql
让 homebrew 为您安装它。
回到你手头的问题:
您通过自制软件正确安装了 postgres 并运行了 bundler 以安装运行项目所需的所有 gem(包括 psql gem)。您的问题是您有一个使用 postgres 9.3 存储数据的项目,但在某些时候您将 postgres 版本升级到 9.4。您有 2 个选择:
如果您拥有的数据对您很重要,您可以使用 pg_upgrade用于将 9.3 数据传输到 9.4 安装的实用程序。
如果您的数据无关紧要,您可以只使用 homebrew 删除 postgres 安装并安装一个开箱即用的新副本。
关于ruby-on-rails - 对 PGSQL 错误所需的 brew install 与 bundle install 的解释。 (如何使我的 PGSQL 工作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28568884/
我是 Maven 新手,正在尝试了解它是如何工作的。 我知道生命周期由多个阶段组成。阶段称为他们的魔力。如果调用一个阶段,则前面的所有阶段也会执行。例如,当我调用 mvn install 时就会发生这
我想安装Ros(机器人操作系统)的驱动程序,我有两个选项:二进制安装和从源代码编译安装。我想知道哪种安装更好,每种安装有哪些优点和缺点。 最佳答案 源:又称源代码,通常位于某种 tarball 或 z
以及更具体的问题。我的理解对吗: “nuget install”总是安装到您运行它的目录吗? “choco install”安装到特殊的 choco 目录,然后运行脚本在系统中传播它? “nuget
我创建了 Android 项目,但随后我立即得到出现错误的信息。 Warning:(22, 12) Dependency on a support library, but the SDK insta
我的安装程序有 32 位和 64 位版本,它们具有(几乎)完全相同的代码和自定义操作序列(只有与此问题无关的细微差别) 我希望我的安装程序能够检测它之前是否已安装,并在这种情况下运行我自己的代码,而不
我在TFS版本中使用npm install cmd。我总是得到以下警告: npm WARN optional dep failed, continuing fsevents@0.3.1 如何删除此警告
是否可以将install(TARGETS ...)与在add_subdirectory添加的目录中定义的目标一起使用? 我的用例是,我想为gtest构建一个rpm的e.gg。 gtest项目恰好有一个
我需要使用 MSI 创建安装程序,其目的是根据用户的区域(从环境变量读取)调用正确的安装程序。也就是说,这个安装程序应该有 3 个文件(它们本身就是安装程序),一个用于美国,一个用于欧洲,一个用于亚洲
我正在尝试通过 Android Studio 3.5 在我的小米 RedMi S2 上运行我的应用程序。在手机上安装应用程序时抛出错误: Installation did not succeed. T
使用govendor时,go install、govendor install +local和govendor install +vendor,^program有什么区别? govendor inst
我用谷歌搜索了很多,但找不到答案。因此,在 Windows Installer 属性值中可以存储多少个字符。如果你给出答案,你能提供答案的来源吗? 最佳答案 我问 Windows Installer
Cuda v9.0 有几个补丁 我应该安装最新补丁还是安装所有补丁? https://developer.nvidia.com/cuda-90-download-archive?target_os=W
我正在尝试通过它的文档安装 phalcon!在这一步我有一个错误: installation/FreeBSD Command: pkg_add -r phalcon 错误: 'pkg_add' is
我有一个安装,如果应用程序退出,它会升级该应用程序的先前版本。当安装处于升级模式时,我想跳过某些操作。如何确定安装是在升级模式还是首次安装模式下运行? 我正在使用 Wise Installer,但我认
MSI 数据库包含一个表 MsiFileHash 。根据文档MsiFileHash 表用于存储 Windows Installer 包提供的源文件的 128 位哈希。 有人知道使用/应该使用什么哈希算
我尝试在本地和全局运行 npm install browserify (-g) 但我总是遇到以下错误 npm ERR! peerinvalid The package bn.js does not s
我有一个用于我正在构建的 python 模块的 SConstruct 文件: import distutils.sysconfig env = Environment(CPPPATH=['includ
使用 Installshield 2010 和 Basic MSI 项目。 我有一个之前由我的安装程序安装的 exe。该 exe 需要在安装程序升级期间运行。有没有办法保证安装程序不会尝试关闭进程?基
我是围棋初学者。我试图编译一个 go 项目,但找不到任何解释“/...”的文档或文章。 cd ~/src/ephenation-server go install -v ./... 等待您的帮助。 最
我试过在选择和不选择‘安装Mongo指南针’选项的情况下运行安装程序,但我仍然无法安装它,也无法取消安装。然后,此设置对话冻结20-30分钟以上,没有任何进展。这实际上就是从他们的website(ht
我是一名优秀的程序员,十分优秀!