Rails и MySQL - ActiveRecord :: ConnectionNot создан в производственной среде - PullRequest
0 голосов
/ 04 февраля 2012

Я постараюсь быть коротким:
Использование Rails 3.2.1 и mysql2 для баз данных; работает на Ubuntu 11.10
В среде development все работает просто отлично
Когда я запускаю свой сервер (WEBrick) в production , он нормально загружается, но после загрузки любой страницы возникает следующая ошибка:

ActiveRecord::ConnectionNotEstablished (ActiveRecord::ConnectionNotEstablished):
activerecord (3.2.1)
lib/active_record/connection_adapters/abstract/connection_pool.rb:374:in
retrieve_connection'
activerecord (3.2.1)
lib/active_record/connection_adapters/abstract/connection_specification.rb:168:in
`retrieve_connection'
activerecord (3.2.1)
lib/active_record/connection_adapters/abstract/connection_specification.rb:142:in
`connection'
...
/home/metjush/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/httpserver.rb:138:in
`service'
/home/metjush/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
/home/metjush/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/server.rb:191:in `block
in start_thread'

После попытки найти любой возможный источник ошибки и изучения, как миллиард различных веб-сайтов и подобных отчетов, я все еще не могу найти, что не так. Мой database.yml (работает на localhost прямо сейчас, и мои настройки в производственной среде такие же, как для разработки, которая работает) в порядке, мой Gemfile в порядке (gem 'mysql2 'включено, не волнуйтесь), производственная база данных создана, и у rake db: migrate не было проблем с ее миграцией ... Любой другой возможный источник ошибок, о котором я не думал или не нашел в Интернете?

Я подчеркиваю, это происходит только в производстве

Спасибо за вашу помощь


РЕДАКТИРОВАТЬ Отправка моего Gemfile:

source 'https://rubygems.org'

gem 'rails', '3.2.1'

gem 'mysql2'

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

gem 'bcrypt-ruby', :require => 'bcrypt'
gem 'rufus-scheduler'
gem 'gmaps4rails'

Надеюсь, это поможет - хотя я не вижу в этом ничего плохого.

РЕДАКТИРОВАТЬ ВТОРОЕ
Как ни странно, у меня нет проблем, когда я запускаю консоль rails в производственной среде - запросы MySQL работают, экземпляры модели могут быть сохранены без проблем. Вышеупомянутая ошибка появляется только при попытке доступа к базе данных из браузера.

Ответы [ 5 ]

2 голосов
/ 06 апреля 2014

Для меня дело дошло до неправильно настроенного файла database.yml.Чтобы подтвердить правильное форматирование, вы можете сделать следующее из каталога, в котором хранится файл .yml:

irb 
require 'yaml'
a = YAML::load(File.open("database.yml"))

если у вас возникнет ошибка, вы увидите что-то подобное в ответ ...

irb(main):001:0> require 'yaml'
=> true
irb(main):002:0> a = YAML::load(File.open("database.yml"))
Psych::SyntaxError: (<unknown>): could not find expected ':' while scanning a simple key at line 17 column 3
        from C:/Ruby193/lib/ruby/1.9.1/psych.rb:203:in `parse'
        from C:/Ruby193/lib/ruby/1.9.1/psych.rb:203:in `parse_stream'
        from C:/Ruby193/lib/ruby/1.9.1/psych.rb:151:in `parse'
        from C:/Ruby193/lib/ruby/1.9.1/psych.rb:127:in `load'
        from (irb):2
        from C:/Ruby193/bin/irb:12:in `<main>'

В моем случае, я забыл оставить пробел после ":" при вводе пароля базы данных.

1 голос
/ 21 сентября 2012

Вы, вероятно, уже перешли к этому, но в случае, если кто-то еще попадет на эту страницу, вот пара вещей, которые нужно попробовать.

Вы уверены, что при попытке запустить сервер в производственном режиме нет опечаток?

bundle exec rails s --environment=production

Если в «производственных» рельсах есть опечатка, она не будет жаловаться при попытке запустить сервер, но попытается найти эту опечатку в файле database.yml, и, так как она не существует, вы получите ошибку, которую вы упомянутый

Еще одна попытка: проверьте, правильно ли отформатирован файл database.yml. YAML очень требователен к символам табуляции и пробелам, поэтому дважды проверьте, выполнив в консоли следующие действия

irb 
require 'yaml'
a = YAML::load(File.open("config/database.yml"))

Если вы вернули хеш, ваш файл в порядке, в противном случае исправьте возвращенную проблему

1 голос
/ 08 февраля 2012

Я столкнулся с подобной проблемой в геме движка Rails и в конце концов отследил ее до объявления области видимости (например: scope: owing, where ...) в одном из классов. Комментируя это, мы решили ActiveRecord::ConnectionNotEstablished, но привели к неудачной спецификации (очевидно).

Движок использует драгоценный камень Combustion, чтобы включить приложение для минимизированных рельсов для спецификаций, и проблема возникла независимо от типа БД. Надеюсь, это поможет.

Редактировать: Вот проблема рельсов для этого .

1 голос
/ 20 сентября 2012

Вы должны сначала создать базу данных mysql. а затем перейдите в каталог приложения и отредактируйте файл database.yml (~ / config / database.yml) с информацией о вашей базе данных.

как:

development:
adapter: msql2
database: your database path
username: mysql username
password: mysql password
pool: 5
timeout: 5000
1 голос
/ 07 февраля 2012

У меня была такая же проблема.Последняя версия Spree по-прежнему не совместима с rails 3.2.0 / 3.2.1, поэтому используйте rails 3.1.3 и последнюю версию spree

В моем случае версия rails была 3.2.0, а версия spree по умолчанию была 0,40+0,0.я изменил версию spree на 1.0.0.rc3, и это показало мне проблему совместимости с rails, поэтому я изменил версию rails на 3.1.3 и все прошло нормально.

Вы можете использовать последнюю стабильную версию Spree, я думаю, это 0,70,3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...