Reputation: 141
To begin, I'm quite a newbie to Rails. I'm making a blog app, and when trying to run it on production, both ways:
rails s -e production
and
RAILS_ENV=production
I get the same error:
=> Booting WEBrick => Rails 3.2.8 application starting in production on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Exiting
/home/loku/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-> resolve_hash_connection': database configuration does not specify adapter (ActiveRecord::AdapterNotSpecified)
...
My setup:
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
Upvotes: 14
Views: 914
Reputation: 798
You might need to add a production
group in your gemfile... Something like the following:
group :production do
gem 'mysql2'
end
The run bundle install
from the terminal and trying starting it all again.
Upvotes: 1
Reputation: 681
You need to specify the db socket. Its not always in /tmp/mysql.sock sometimes its in /var... it depends on your install of mysql2
socket: /tmp/mysql.sock needs to be a line in your database.yml production section
e.g.
production:
adapter: mysql2
encoding: utf8
reconnect: false
database: blogg_production
pool: 5
timeout: 5000
username: root
password: ***
socket: /tmp/mysql.sock
host: localhost
Upvotes: 1
Reputation: 10328
Please make doubly certain what Rumen Milushev suggested: YAML is very sensitive to indentation.
Try removing the production:
part completely, rename development:
to production:
and try again.
If that works, validate your database.yml against a tool such as yamllint.com
Upvotes: 1
Reputation: 5644
Basing on the source, there are only 2 possible explanations for the error you got. AdapterNotSpecified - Raised when adapter not specified on connection (or configuration file config/database.yml
misses adapter field).
Did you copy and paste your database.yml file? If so, you might want to erase it and type them all again from scratch. Make sure indentation is consistent. Sometimes when copy and pasting, you also copy some hidden characters which get evaluated and cause problems in your code.
Hope that helps.
Upvotes: 2
Reputation: 1814
These are the things to consider
bundle exec rails s -e production (make sure to use bundle exec)
if that doesn't work, I would look in config/environments/production.rb and ensure there isn't anything rare there.
Upvotes: 4
Reputation: 606
You need to specify all environments you forgot about test thats probably why the error is happening
Upvotes: -2