Ошибка производственной среды

Чтобы начать, я довольно новичок в 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

  • Ваш Gemfile должен указать gem mysql. - Не обращайте внимания, я вижу, что это происходит сейчас.
  • Вам нужно указать сокет db. Его не всегда в /tmp/mysql.sock иногда его в /var... это зависит от вашей установки mysql2

    socket:/tmp/mysql.sock должна быть строка в разделе создания базы данных .yml

например.

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

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