1

几天后就从rails和Linux开始......我想部署到heroku,其中一个最佳实践是无论如何也要在本地环境中使用postgresql......我遵循了其中一个教程并创建了一个示例应用程序

安装了 pg gem。捆绑安装工作正常。rake db:migrate工作并为我的应用程序创建了表。但是......当我尝试运行我的rails页面时,它给出了这个错误:

ActiveRecord::ConnectionNotEstablished

这是完整跟踪的结尾:

> activerecord (3.2.3) lib/active_record/connection_adapters/abstract/connection_pool.rb:398:in `retrieve_connection'
activerecord (3.2.3) lib/active_record/connection_adapters/abstract/connection_specification.rb:168:in `retrieve_connection'
activerecord (3.2.3) lib/active_record/connection_adapters/abstract/connection_specification.rb:142:in `connection'
activerecord (3.2.3) lib/active_record/query_cache.rb:67:in `rescue in call'
activerecord (3.2.3) lib/active_record/query_cache.rb:61:in `call'
activerecord (3.2.3) lib/active_record/connection_adapters/abstract/connection_pool.rb:467:in `call'
actionpack (3.2.3) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
activesupport (3.2.3) lib/active_support/callbacks.rb:405:in `_run__4423031206660944571__call__1711406629982304701__callbacks'
activesupport (3.2.3) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.3) lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
activesupport (3.2.3) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (3.2.3) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (3.2.3) lib/action_dispatch/middleware/reloader.rb:65:in `call'
actionpack (3.2.3) lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
actionpack (3.2.3) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
actionpack (3.2.3) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'

我正在使用 pgadmin 3 来查看我的数据库。我创建了一个名为 schaller 的用户,它与我在 Ubuntu 中的用户相同

我的 database.yml 文件:

development:
  adapter: postgresql
  database: rails
  encoding: unicode
  username: schaller
  password: password123
  host: localhost
  pool: 5

为了让rails连接到postgres,我还能检查什么?

编辑:

在 webrick 上的 netbeans 中启动 rails 服务器时出错

在 2012-09-13 23:12:31 +0300 ActiveRecord::ConnectionNotEstablished (ActiveRecord::ConnectionNotEstablished) 开始 GET "/gangs/" for 127.0.0.1: activerecord (3.2.3) lib/active_record/connection_adapters/abstract /connection_pool .rb:398:in retrieve_connection' activerecord (3.2.3) lib/active_record/connection_adapters/abstract /connection_specification.rb:168:inretrieve_connection' activerecord (3.2.3) lib/active_record/connection_adapters/abstract /connection_specification.rb:142:in connection' activerecord (3.2.3) lib/active_record/query_cache.rb:67:inrescue in call' ...

编辑我的 gem 文件中的主要内容:

gem 'rails', '3.2.3'
gem 'pg'
gem 'thin'

编辑:为 postgresql 连接添加日志

[local]
2012-09-15 18:05:35 IDT LOG:  connection received: host=127.0.0.1 port=44038
2012-09-15 18:05:35 IDT LOG:  connection authorized: user=schaller database=postgres
2012-09-15 18:05:35 IDT LOG:  connection received: host=127.0.0.1 port=44039
2012-09-15 18:05:35 IDT LOG:  connection authorized: user=schaller database=rails
2012-09-15 18:07:26 IDT LOG:  connection received: host=127.0.0.1 port=44048
2012-09-15 18:07:26 IDT LOG:  connection authorized: user=schaller database=rails

无论如何,当我连接 pgadmin 3 并运行命令“rake db:migrate”时,我看到正在写入日志,但当我运行我的 rails 应用程序时却没有……

谢谢

4

3 回答 3

1

好的,已经有几天了..我再次阅读了所有答案和评论,因为无论如何我真的需要一个解决方案!@Muhammad Sannan 留下的评论起到了作用。我是 Rails 新手,所以我不知道适配器是什么.. 但在快速谷歌搜索后,我运行了这个命令:

gem install activerecord-postgresql-adapter

这就是诀窍:)

现在一切正常。我只是不明白没有这个适配器的 db:migrate 是如何工作的..

于 2012-09-17T14:49:31.117 回答
0

我认为问题出在你的 database.yml 上。你错过了我认为你在 heroku 上使用的模式的生产部分。只需添加

production:
  adapter: postgresql
  database: rails
  encoding: unicode
  username: schaller
  password: password123
  host: localhost
  pool: 5

到 heroku 上的 database.yml

于 2012-09-13T21:30:23.820 回答
0

好吧,如果你能在 pgadmin 中看到 db,你就知道基本的连接细节是正确的。如果您没有修改 pgadmin,那么端口号或其他详细信息也不太可能发生变化。

所以 - 我们需要找出发生了什么。第一步是在 PostgreSQL 中打开连接日志并查看 rails 是否真的在连接。设置log_connections并重新启动 PG,然后看看会发生什么。如果您在日志中没有看到任何内容,但从 pgadmin 执行,则 rails 没有看到正确的连接设置。

http://www.postgresql.org/docs/current/static/runtime-config-logging.html#GUC-LOG-CONNECTIONS

于 2012-09-13T22:41:17.707 回答