错误消息:在捆绑之前确保`gem install pg -v' 0.18.1'`成功

时间:2015-05-11 08:10:46

标签: ruby-on-rails ruby

我遇到了红宝石的问题。我尝试了很多,但对我没什么用。

当我想启动rails服务器时,我收到以下错误消息:

  

安装pg(0.18.1)时发生错误,Bundler无法继续。   确保" gem install pg -v' 0.18.1"在捆绑之前成功。

这是我已经尝试过的:

sudo install gem
bundle install
bundle install --path vendor/cache
gem install pg -v '0.18.1'

当我尝试gem install pg -v '0.18.1'时,我收到此错误消息:

  

无法找到gem' pg(> = 0)ruby'在Gemfile中列出的或安装在此计算机上的任何gem源中。   运行bundle install以安装缺少的宝石。

bundle install也不起作用。我收到此错误消息:

  

安装pg(0.18.1)时发生错误,Bundler无法继续。   在捆绑之前确保gem install pg -v '0.18.1'成功。

我还尝试在新的ruby项目中启动服务器。

没有任何帮助......

感谢您的帮助!

这些是我在Gemfile中的更改:

group :production do
   gem 'pg'
   gem 'rails_12factor'
 end

group :development do
   gem 'sqlite3'
 end

10 个答案:

答案 0 :(得分:106)

如果您使用 Ubuntu ,很可能您错过了隐藏的依赖

sudo apt-get install libpq-dev

如果您使用的是 OS X ,请尝试以下步骤

  • 安装Xcode命令行工具(Apple Developer站点)。如果你有 它已经安装,使用brew update更新它。
  • brew uninstall postgresql
  • brew install postgresql
  • gem install pg

答案 1 :(得分:29)

如果您是Ubuntu用户,则需要在安装gem之前执行以下操作

sudo apt-get install libpq-dev

如果您在GEMFILE中拥有r gem,则执行gem install pg -v '0.18.1'或仅bundle install

答案 2 :(得分:20)

如果你使用的是Mac和Homebrew,看起来像libpqxx lib一样。

brew install libpqxx

这个命令应该这样做。

答案 3 :(得分:12)

如果您不确定pg_config的位置,并假设您使用的是Linux或Mac,则可以运行以下命令:

which pg_config

这将返回==> /usr/pgsql-9.1/bin/pg_config

现在将此路径用作

bundle config build.pg --with-pg-config=/usr/pgsql-9.1/bin/pg_config

立即完成bundle install

答案 4 :(得分:10)

我在Bloc的老师有解决方案!如果有人遇到同样的问题,请运行以下命令:

  1. gem uninstall pg
  2. bundle install --without production

  3. RedirectMatch 301 ^/mauritius_holiday_rentals/search//?/?/2/(.*)$ /mauritius_holiday_rentals/search/2/$1 RedirectMatch 301 ^/mauritius_holiday_rentals/search//?/?/(.*)$ /mauritius_holiday_rentals/search/$1

  4. 这解决了我的问题。

答案 5 :(得分:4)

ARCHFLAGS="-arch x86_64" bundle install正如我所讨论的那样为here工作。

答案 6 :(得分:1)

使用Rails 5.1.2运行到此(一年后!)的任何人在首次安装和启动Postgresql(Centos 7)后,我执行了以下操作。 所以假设您已经安装了postgresql并且设置了postgres服务器和用户。(+通常用于Linux的标准开发工具)。

Add extra deps for rails to build gems.

$ sudo yum install postgresql-devel

Add postgres path in ~/.profile   

export PATH=/usr/bin/postgres:$PATH  (or your installed path)

Add another user/role with create db privileges using pgAdmin or shell
(should be the same user as the system/rails user because the postgres user doesn't have permissions for /rails/db/schema.rb, but the system/rails user does)

Below are shell commands for postgres create role and database.

$ sudo -u postgres psql (enter postgres password)
$ create role (linux/rails user) with createdb login password 'password';
$ \du  (check its done and has createDB privs)
$ CREATE DATABASE name;

如果没有出现其他参数,您将自动成为新数据库的所有者。

或者您可以使用像DBeaver这样的gui来做同样的事情。

So the above sets up for rails to access postgresql and build the pg gem once you've swapped out the default Gemfile & config/database.yml

Now create app and set it up (no need for -d postgresql flag because we swap out the Gemfile and the config/database.yml file contents completely and rails will install a postgresql db on bundle update/install.

(change some to rake for earlier versions of rails)

$ rails new app
$ cd app
$ atom (or editor) Gemfile config/database.yml
Swap out both file contents (to ones shown below) & save.
$ bundle update
$ bundle install

Check it with

$ rails db:create

(postgresql database should now be connected), so scaffold something

$ rails g scaffold Users name:string email:string comment:text
$ rails db:migrate
$ rails server

http://localhost:3000 shows the default page and http://localhost:3000/users brings up your new Users page using postgresql not sqlite3. Put something in to test it.

下面是我用于Rails 5.1.2的Gemfile和config / database.yml文件,包括Heroku的点击。

Gemfile rails 5.1.2

 source 'https://rubygems.org'

    gem 'rails',        '5.1.2'
    gem 'puma',         '3.9.1'
    gem 'sass-rails',   '5.0.6'
    gem 'uglifier',     '3.2.0'
    gem 'coffee-rails', '4.2.2'
    gem 'jquery-rails', '4.3.1'
    gem 'turbolinks',   '5.0.1'
    gem 'jbuilder',     '2.7.0'
    gem 'taps'

    #Postgresql Database
    group :production do
    gem 'pg', '0.21.0'
    end

    group :development, :test do
      gem 'sqlite3', '1.3.13'
      gem 'byebug',  '9.0.6', platform: :mri
    end

    group :development do
      gem 'web-console',           '3.5.1'
      gem 'listen',                '3.0.8'
      gem 'spring',                '2.0.2'
      gem 'spring-watcher-listen', '2.0.1'
    end
    # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
    gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

config/database.yml file contents (watch out for indentation)

development:
    adapter: postgresql
    encoding: unicode
    database: development or app_name
    pool: 5
    username: (user created for postgres/rails)
    password: password
    host: localhost


test:
    adapter: postgresql
    encoding: unicode
    database: development or app_name
    pool: 5
    username: (user created for postgres/rails)
    password: password
    host: localhost


production:
    adapter: postgresql
    encoding: unicode
    database: development or app_name
    pool: 5
    username: (user created for postgres/rails)
    password: password
    host: localhost

完成以上所有操作后,您将获得一个dev / prod postgresql数据库,但无需测试,您也可以直接从rails访问数据库,只需运行" rails db"并输入密码。

它很简单,但可以快速启动并运行rails / postgresql。

答案 7 :(得分:1)

对于Alpine linux,您要先安装postgresql-dev

apk add --update postgresql-dev

答案 8 :(得分:0)

尝试安装pg,如下所示:

gem install pg -- --with-pg-dir=/path/to/postgresql/root

如果它不起作用,请尝试

gem install pg -- --with-pg-include=/path/to/postgresql/root/include \
                  --with-pg-lib=/path/to/postgresql/root/lib

答案 9 :(得分:0)

Bundler在识别PostgreSQL服务器路径时遇到了一些问题。如果您非常确定您的PostgreSQL服务器已正确安装,那么您需要做的就是将此路径添加到PATH变量。示例命令:

export PATH=/path/to/postgres/bin/:$PATH

如果您仍然遇到一些问题,很可能您的PostgreSQL安装有问题。如果是,请尝试安装Postgres.app并执行如下命令:

export PATH=/Applications/Postgres.app/Contents/Versions/9.3/bin/:$PATH

确保版本正确。