Rails и MySQL - ActiveRecord :: ConnectionNot создан в производственной среде

0

Я постараюсь быть коротким:
Использование 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'

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

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

Спасибо за помощь


EDIT Проводка моего 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'

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

EDIT TWO​​strong >
Как ни странно, у меня нет проблем, когда я запускаю консоль рельсов в производственной среде - работа с MySQL-запросами, экземпляры моделей могут быть сохранены без проблем. Я получаю вышеупомянутую ошибку, когда пытаюсь получить доступ к базе данных из браузера.

  • 0
    Если вы скопируете \config\environment\development.rb в \config\environment\production.rb , это работает?
  • 0
    у вас правильно установлены username и password на вашем локальном хосте ?? Это происходит только тогда, когда rails не может подключиться к серверу базы данных или к базе данных.
Показать ещё 2 комментария

5 ответов

2

Для меня это дошло до неверно сконфигурированного файла 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

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

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

bundle exec rails s --environment=production

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

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

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

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

1

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

как:

development:
adapter: msql2
database: your database path
username: mysql username
password: mysql password
pool: 5
timeout: 5000
1

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

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

Изменить: Здесь рельсы выдают для него.

  • 0
    Я также не использую драгоценный камень Combustion, поэтому я не думаю, что это должно быть проблемой ...
  • 0
    Помещение тела каждого объявления области в лямбда-блок позволило мне обойти это сейчас. Кажется, это все еще проблема в Rails 3.2.8.
1

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

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

Вы можете использовать последнюю версию стабильной версии, я думаю, ее 0.70.3.

  • 0
    Благодарю. но я не использую веселье, так что это не может быть проблемой.
  • 0
    извините, я думаю, что я разместил его в неправильной теме, был предназначен для публикации в выпуске
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню