Ответ 1
У моего учителя в блоке было решение! Если у кого-то есть такая же проблема, выполните следующие команды:
-
spring stop
-
gem uninstall pg
-
bundle install --without production
Это решило мою проблему.
У меня проблема с рубином. Я много пробовал, но ничего не работает для меня.
Когда я хочу запустить сервер 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 или установленном на этом компьютере. Запустите
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
У моего учителя в блоке было решение! Если у кого-то есть такая же проблема, выполните следующие команды:
spring stop
gem uninstall pg
bundle install --without production
Это решило мою проблему.
Если вы используете Ubuntu, скорее всего, вам не хватает скрытой зависимости
sudo apt-get install libpq-dev
Если вы находитесь в OS X, попробуйте выполнить следующие действия.
brew update
.brew uninstall postgresql
brew install postgresql
gem install pg
Если вы являетесь пользователем Ubuntu, вам необходимо выполнить следующую предварительную установку gem
sudo apt-get install libpq-dev
Затем выполните gem install pg -v '0.18.1'
или просто bundle install
, если у вас есть gem в GEMFILE.
Если вы используете Mac и Homebrew, то выглядит как libpqxx lib.
brew install libpqxx
Эта команда должна это сделать.
Если вы не знаете, где находится ваш 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
ARCHFLAGS="-arch x86_64" bundle install
работал у меня, как обсуждалось здесь.
Попробуйте установить 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
У 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
Убедитесь, что версия верна.
Настройка PostgreSQL на CentOS 6
[[email protected] ~]# yum install postgresql-server
[[email protected] ~]# psql
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
[[email protected] ~]# /etc/init.d/postgresql
Usage: /etc/init.d/postgresql {start|stop|status|restart|condrestart|try-restart|reload|force-reload|initdb}
[[email protected] ~]# /etc/init.d/postgresql start
/var/lib/pgsql/data is missing. Use "service postgresql initdb" to initialize the cluster first.
[FAILED]
[[email protected] ~]# service postgresql initdb
Initializing database: [ OK ]
[[email protected] ~]#
[[email protected] ~]# /etc/init.d/postgresql start
Starting postgresql service: [ OK ]
[[email protected] ~]# psql
psql: FATAL: Ident authentication failed for user "root"
[[email protected] ~]#
[[email protected] ~]# su - postgres
-bash-4.1$ psql
psql (8.4.13)
Type "help" for help.
postgres=# \l
List of databases
Name | Owner | Encoding | Collation | Ctype | Access privilege
s
-----------+----------+----------+-------------+-------------+-------------------
----
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
: postgres=CTc/postg
res
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
: postgres=CTc/postg
res
(3 rows)
postgres=#
postgres=# \q
-bash-4.1$
-bash-4.1$ pwd
/var/lib/pgsql
-bash-4.1$ wget -q http://www.commandprompt.com/ppbook/booktown.sql
-bash-4.1$ ls -lh booktown.sql
-rw-r--r-- 1 postgres postgres 42K Jan 11 2005 booktown.sql
-bash-4.1$ psql -f booktown.sql
CREATE DATABASE
(snip)
-bash-4.1$ psql
psql (8.4.13)
Type "help" for help.
postgres=# \l
List of databases
Name | Owner | Encoding | Collation | Ctype | Access privilege
s
-----------+----------+----------+-------------+-------------+-------------------
----
booktown | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
: postgres=CTc/postg
res
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
: postgres=CTc/postg
res
(4 rows)
postgres=#
postgres=# \q
-bash-4.1$
-bash-4.1$ pg_dumpall > /tmp/pg_dumpall.`date +%s`.sql
-bash-4.1$ ls -lh /tmp/pg_dumpall.1349195444.sql
-rw-r--r-- 1 postgres postgres 44K Oct 2 12:30 /tmp/pg_dumpall.1349195444.sql
-bash-4.1$
-bash-4.1$ pg_dump --clean booktown > /tmp/pg_dump-booktown.`date +%s`.sql
-bash-4.1$ ls -lh /tmp/pg_dump-booktown.1349196164.sql
-rw-r--r-- 1 postgres postgres 46K Oct 2 12:42 /tmp/pg_dump-booktown.1349196164.sql
-bash-4.1$
-bash-4.1$ psql booktown
psql (8.4.13)
Type "help" for help.
booktown=#
booktown=# \d
(snip)
public | subjects | table | postgres
public | text_sorting | table | postgres
booktown=# SELECT * FROM subjects;
0 | Arts | Creativity St
1 | Business | Productivity Ave
(snip)
Настройка PostgreSQL на Fedora 20
[[email protected] ~]# yum install postgresql-server
(snip)
[[email protected] ~]# systemctl start postgresql.service
Job for postgresql.service failed. See 'systemctl status postgresql.service' and 'journalctl -xn' for details.
[[email protected] ~]#
[[email protected] ~]# systemctl status postgresql.service
postgresql.service - PostgreSQL database server
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled)
Active: failed (Result: exit-code) since Sat 2014-01-18 08:08:38 EST; 12s ago
Process: 4921 ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGDATA} (code=exited, status=1/FAILURE)
Jan 18 08:08:38 localhost.localdomain systemd[1]: Starting PostgreSQL database server...
Jan 18 08:08:38 localhost.localdomain postgresql-check-db-dir[4921]: "/var/lib/pgsql/data" is missing or empty.
Jan 18 08:08:38 localhost.localdomain systemd[1]: postgresql.service: control process exited, code=exited status=1
Jan 18 08:08:38 localhost.localdomain systemd[1]: Failed to start PostgreSQL database server.
Jan 18 08:08:38 localhost.localdomain systemd[1]: Unit postgresql.service entered failed state.
[[email protected] ~]#
[[email protected] ~]# postgresql-setup initdb
Initializing database ... OK
[[email protected] ~]#
[[email protected] ~]# systemctl start postgresql.service
[[email protected] ~]#
[[email protected] ~]# systemctl stop postgresql.service
[[email protected] ~]#
[[email protected] ~]# cp -a /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf.orig
[[email protected] ~]# # insecure... just for dev...
[[email protected] ~]# vim /var/lib/pgsql/data/pg_hba.conf
[[email protected] ~]# diff /var/lib/pgsql/data/pg_hba.conf.orig /var/lib/pgsql/data/pg_hba.conf
80c80
< local all all peer
---
> local all all trust
82c82
< host all all 127.0.0.1/32 ident
---
> host all all 127.0.0.1/32 trust
[[email protected] ~]#
[[email protected] ~]# systemctl start postgresql.service
[[email protected] ~]#
[[email protected] ~]# su - postgres
-bash-4.2$ psql -c '\du'
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication | {}
-bash-4.2$ psql -c "CREATE ROLE pguser1 UNENCRYPTED PASSWORD 'secret1' NOSUPERUSER CREATEDB CREATEROLE NOINHERIT LOGIN"
CREATE ROLE
-bash-4.2$ psql -c '\du'
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
pguser1 | No inheritance, Create role, Create DB | {}
postgres | Superuser, Create role, Create DB, Replication | {}
-bash-4.2$
-bash-4.2$ psql -c '\l'
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 rows)
-bash-4.2$
-bash-4.2$ psql -c "CREATE DATABASE pgdatabase1 WITH OWNER = pguser1"
CREATE DATABASE
-bash-4.2$ psql -c '\l'
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-------------+----------+----------+-------------+-------------+-----------------------
pgdatabase1 | pguser1 | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
-bash-4.2$
Любой, кто работает с этим (через год!), используя Rails 5.1.2, я сделал следующее после первой установки и запуска Postgresql (Centos 7). Предположим, что у вас уже установлен postgresql, и настроен сервер postgres & user (+ обычные стандартные инструменты для разработчиков 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;
Вы автоматически станете владельцем новой базы данных, если другие аргументы не представлены.
Или вы можете использовать gui как DBeaver, чтобы сделать то же самое.
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.
Ниже приведены файлы Gemfile и config/database.yml, которые я использовал для Rails 5.1.2, включая краны для 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 db" и введя пароль.
Просто, но быстро и быстро запускается с помощью rails/postgresql.