Rails Capistrano部署说pg gem即使在gem文件中也没有找到

时间:2016-05-27 02:22:42

标签: ruby-on-rails postgresql rubygems capistrano

讨厌提出这个问题 - 看起来它应该更容易,但我在这一点上难以理解......我正在尝试使用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]

有人有什么想法吗?

1 个答案:

答案 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,但您需要"香草"之一。