讨厌提出这个问题 - 看起来它应该更容易,但我在这一点上难以理解......我正在尝试使用Capistrano初始安装Rails应用程序到数字海洋液滴。这是一个vanilla Rails应用程序,在安装了PG的本地(Windows)计算机上运行正常。但是,当我跑:
cap production deploy:initial
它开始运行但失败了 - 埋在中间的是这条消息:
rake stdout:rake aborted! Gem :: LoadError:指定' postgresql'对于数据库适配器,但未加载gem。将
)gem 'pg'
添加到您的Gemfile中(并确保其版本符合最低要求
现在,pg gem在我的gem文件中。当我在发布目录中运行bundle install
时,捆绑器运行得很好,但是当我运行bundle which
时,列表中不存在pg。
捆绑列表 捆绑包含的宝石: * actionmailer(4.1.8) * actionpack(4.1.8) * actionview(4.1.8) * activemodel(4.1.8) * activerecord(4.1.8) * activesupport(4.1.8) * arel(5.0.1.20140414130214) * autoprefixer-rails(6.3.6) * babel-source(5.8.35) * babel-transpiler(0.7.0) * bootstrap-sass(3.2.0.2) *建造者(3.2.2) * bundler(1.12.4) * coffee-rails(4.0.1) *咖啡脚本(2.4.1) * coffee-script-source(1.10.0) * connection_pool(2.2.0) * erubis(2.7.0) * execjs(2.6.0) *徒步旅行(1.2.3) * i18n(0.7.0) * jbuilder(2.4.1) * jquery-rails(3.1.2) * json(1.8.3) *邮件(2.6.4) *哑剧型(3.0) * mime-types-data(3.2016.0221) * minitest(5.8.4) * multi_json(1.12.0) * puma(3.4.0) *架子(1.5.5) *机架测试(0.6.3) * rails(4.1.8) *铁路(4.1.8) * rake(11.1.2) * rdoc(4.2.2) * react-rails(1.7.1) * sass(3.2.19) * sass-rails(4.0.5) * sdoc(0.4.1) *链轮(2.12.4) *链轮导轨(2.3.3) *托尔(0.19.1) * thread_safe(0.3.5) *倾斜(1.4.1) * turbolinks(2.5.3) * tzinfo(1.2.2) * uglifier(3.0.0)
我觉得这是非常简单的事情,但这是我第一次部署Rails应用程序而且我花了更多的时间来承认试图解决这个问题。我还按照另一个SO答案的建议运行bundle config build.pg --with-pg-config=/usr/bin/pg_config
,并且我已独立运行gem install pg
。
这是我的Gemfile:
source 'https://rubygems.org'
gem 'rails', '4.1.8'
gem 'pg'
gem 'sass-rails', '~> 4.0.3'
gem 'uglifier', '>= 1.3.0'
gem 'execjs'
gem 'coffee-rails', '~> 4.0.0'
gem 'therubyracer', platforms: :ruby
gem 'react-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'bootstrap-sass'
gem 'autoprefixer-rails'
gem 'jquery-rails'
group :development do
gem 'capistrano', require: false
gem 'capistrano-rvm', require: false
gem 'capistrano-rails', require: false
gem 'capistrano-bundler', require: false
gem 'capistrano3-puma', require: false
end
gem 'puma'
gem 'tzinfo-data', platforms: [:mingw, :mswin]
有人有什么想法吗?
答案 0 :(得分:1)
感谢@ kasperite的帮助!
在我的本地Gemfile.lock中(在Windows上,它被推送到GitHub然后拉到部署到Ubuntu服务器)我有这条线:
pg (0.18.4-x86-mingw32)
我将其改为:
pg (0.18.4)
并推送到GitHub,它实际上确实在Droplet上进行安装并继续部署。 (得到了不同的错误,但这有进展。)
所以,如果您使用Rails + PG在Windows上进行开发并部署到Ubuntu(或者我认为不是Windows的任何东西),您的锁定文件将列出Windows pg gem,但您需要"香草"之一。