【问题标题】:Deployment with Capistrano giving error for Pg gem使用 Capistrano 部署 Pg gem 时出错
【发布时间】:2018-03-21 08:01:41
【问题描述】:

当我尝试使用 Capistrano 部署我的应用程序时,它给出了错误

安装 pg (1.0.0) 时出错,Bundler 不能 继续。

在捆绑之前确保gem install pg -v '1.0.0' 成功。

我已经安装了 pg 版本 1.0.0 及其必备依赖项。

为了解决问题,还需要进行哪些其他更改?

【问题讨论】:

  • 堆栈跟踪中是否有任何更具体的错误?您之前是否为另一个 ruby​​ 版本安装过 gem?
  • 我在服务器上只安装了一个 ruby​​ 版本,即 ruby​​-2.4.0

标签: ruby-on-rails postgresql capistrano pg


【解决方案1】:

我设置了一个 capistrano 任务来捆绑配置 pg_config 位置:

namespace :bundler do before 'bundler:install', :config desc 'bundle config options' task :config do on roles(:all), in: :groups, limit: 3, wait: 10 do # Required for pg gem to be installed execute 'bundle config build.pg --with-pg-config=/usr/pgsql-10/bin/pg_config' end end end

【讨论】:

    【解决方案2】:

    当 Capistrano 运行 bundler 时,它会指定将 gem 安装在与全局 gem 位置不同的位置的配置。这意味着即使你之前成功运行过gem install pg,当你cap deploy 时,bundler 仍然需要再次运行。

    要找出捆绑程序失败的原因,您可以尝试几种不同的标准 Capistrano 故障排除技术:

    1. 检查 Capistrano 控制台输出或log/capistrano.log 了解问题的详细信息。 Bundler 有时会将您指向一个记录 gem 安装过程结果的临时文件,您也可以在那里查看。
    2. SSH 进入您的服务器,切换到失败的发布目录,然后手动运行失败的 bundler 命令。看看这是否提供了更多信息。确保输入的 bundler 命令与您在 log/caipstrano.log 中看到的完全一样(尽管我建议删除 --quiet 标志)。它通常看起来像:

      bundle install --deployment --without development test --path /path/to/shared/bundle
      
    3. Capistrano 使用非登录 shell,因此当 Capistrano 运行 bundler 与您以交互方式运行它时,$PATH 之类的内容可能会有所不同。这些差异可能导致捆绑器在一种环境中成功,但在另一种环境中失败。您可以编写这样的任务来检查 Capistrano 看到的环境:

      # Add this to deploy.rb and then run `cap production env`
      task :env do
        on roles(:all) do
          puts capture("env")
        end
      end
      

    Capistrano的环境参考这篇解释:http://capistranorb.com/documentation/faq/why-does-something-work-in-my-ssh-session-but-not-in-capistrano/

    【讨论】:

    • 我通过移动到我的服务器进行检查,我无法安装 pg,当我使用命令 gem install pg -v '1.0.0' 安装 pg 时它会安装,但是当我进行捆绑安装时它会失败并给我错误“确保gem install pg -v '1.0.0'在捆绑之前成功。”。我已经使用“sudo apt-get install libpq-dev”安装了它的预库,但仍然有错误。
    • 我有这个错误:当前目录:/home/root/apps/adminapp1/shared/bundle/ruby/2.4.0/gems/pg-1.0.0/ext /usr/local/ rvm/rubies/ruby-2.4.0/bin/ruby -r ./siteconf20180322-19885-xykhcg.rb extconf.rb --with-pg-config=/Applications/Postgres.app/Contents/Versions/0.21.0/ bin/pg_config 使用来自 /Applications/Postgres.app/Contents/Versions/0.21.0/bin/pg_config 的配置值 sh: 1: /Applications/Postgres.app/Contents/Versions/0.21.0/bin/pg_config: 未找到
    • sh: 1: /Applications/Postgres.app/Contents/Versions/0.21.0/bin/pg_config: not found 检查 libpq-fe.h... 没有找不到' libpq-fe.h 标头 *** extconf.rb 失败 ***
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多