Ошибка производственной среды
Чтобы начать, я довольно новичок в Rails. Я делаю приложение для блога, и, пытаясь запустить его на производстве, в обоих направлениях:
rails s -e production
и
RAILS_ENV=production
Я получаю ту же ошибку:
= > Загрузка WEBrick = > Rails 3.2.8 приложение, начиная с производства на http://0.0.0.0:3000
= > Вызов с -d для отсоединения = > Ctrl-C для выключения сервера
Выход
/home/loku/.rvm/gems/ruby-1.9.3-p286/gems/activerecord- > resolve_hash_connection ': в конфигурации базы данных не указан адаптер (ActiveRecord:: AdapterNotSpecified)
...
Моя настройка:
ruby 1.9.3p286 (2012-10-12 revision 37165) [i686-linux]
Rails 3.2.8
database.yml:
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: blogg_development
pool: 5
timeout: 5000
username: root
password: ***
host: localhost
production:
adapter: mysql2
encoding: utf8
reconnect: false
database: blogg_production
pool: 5
timeout: 5000
username: root
password: ***
host: localhost
Gemfile:
source 'https://rubygems.org'
ruby '1.9.3'
gem 'rails', '3.2.8'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
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'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
gem 'haml-rails'
gem 'less-rails'
gem 'twitter-bootstrap-rails', :git => 'git://github.com/seyhunak/twitter-bootstrap- rails.git'
#gem 'actionpack', '~> 3.1.0'
end
gem 'jquery-rails'
gem 'haml'
gem 'devise'
gem 'cancan'
group :test, :development do
gem 'guard-livereload'
gem 'rb-fsevent'
gem 'pry'
gem 'pry-rails'
end
group :linux do
gem 'libnotify'
end
group :darwin do
gem 'rb-fsevent', require: false
gem 'growl'
end
Ответы
Ответ 1
Вот что нужно рассмотреть
- mysql2 в Gemfile (это)
- производственная среда, определенная в config/database.yml(это)
2.2 удалите любые другие среды из базы данных .yml и оставьте производство: только
- Удостоверьтесь, что он правильно отступил (я думаю, что это)
- установить пакет (чтобы убедиться, что у вас установлены драгоценные камни)
- bundle show mysql2, чтобы увидеть версию и убедиться, что она установлена
-
bundle exec rails s -e production (обязательно используйте bundle exec)
-
Если это не сработает, я бы посмотрел в config/environment/production.rb и убедиться, что там нет ничего редкого.
Ответ 2
Основываясь на источнике, есть только 2 возможных объяснения полученной вами ошибки. AdapterNotSpecified - Поднят, если адаптер не указан в подключении (или файл конфигурации config/database.yml
отсутствует).
Вы скопировали и ввели файл database.yml? Если это так, вы можете удалить его и набрать все снова с нуля. Убедитесь, что отступы согласованы. Иногда при копировании и вставке вы также копируете скрытые символы, которые оцениваются и вызывают проблемы в вашем коде.
Надеюсь, что это поможет.
Ответ 3
Сделайте вдвойне уверенность в том, что предложил Румен Милушев: YAML очень чувствителен к отступу.
Попробуйте полностью удалить часть production:
, переименуйте development:
в production:
и повторите попытку.
Если это работает, проверьте свою базу данных .yml на инструмент, например yamllint.com
Ответ 4
например.
production:
adapter: mysql2
encoding: utf8
reconnect: false
database: blogg_production
pool: 5
timeout: 5000
username: root
password: ***
socket: /tmp/mysql.sock
host: localhost
- yml смешно насчет отступов. Дважды проверьте правильность.
Ответ 5
Вам может потребоваться добавить группу production
в ваш gemfile... Что-то вроде следующего:
group :production do
gem 'mysql2'
end
Запустите bundle install
с терминала и попробуйте снова запустить его снова.
Ответ 6
Вам нужно указать все среды, которые вы забыли о тесте, вероятно, почему происходит ошибка.