how to specify the database in the config? - ruby-on-rails

please help solve the problem.
I made a website. I use sqlite3.
database.yml:
default: &default
adapter: sqlite3
pool: 5
timeout: 5000
development:
<<: *default
database: db/development.sqlite3
test:
<<: *default
database: db/test.sqlite3
production:
<<: *default
database: db/production.sqlite3
gemfile:
source 'https://rubygems.org'
gem 'rails', '4.2.1'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'bootstrap-sass', '3.2.0.0'
gem 'bcrypt', '~> 3.1.7'
gem 'populate'
gem 'faker'
gem 'russian', '~> 0.6.0'
gem 'will_paginate'
gem 'paperclip'
gem 'fancybox2-rails', '~> 0.2.8'
gem 'rspec-rails'
gem 'factory_girl'
gem 'database_cleaner'
group :development do
gem 'sqlite3'
end
group :production do
gem 'pg'
gem 'rails_12factor'
end
group :development, :test do
gem 'byebug'
gem 'web-console', '~> 2.0'
gem 'spring'
end
on the local server it is running. I uploaded it to heroku. as a result of getting the following error message:
500 internal server error
heroku uses postgresql. that's the problem. please help set up configuration

It is as it says: You need to add pg gem. Include the following line in your Gemfile
gem 'pg', group: :production
And you in your config/database.yml file, you can write the following code with appropriate modifications:
development:
adapter: postgresql
encoding: unicode
database: myapp_development
pool: 5
username: myapp
password: password1
test:
adapter: postgresql
encoding: unicode
database: myapp_test
pool: 5
username: myapp
password: password1
production:
adapter: postgresql
encoding: unicode
database: myapp_prouduction
pool: 5
username: myapp
password: password1

Related

PG::UndefinedTable: ERROR: relation "users" does not exist - Azure database

After deploying a web app on Azure (via Linux Virtual Machine) I successfully access the home page (first page) but get this error when I try to login (top-right of the navabar):
I looked up this issue and I saw other people had it. They solved it by resetting and migrating, but it does not work.
So far I have tried:
The following command correctly executes but does not solve the problem:
RAILS_ENV=production rake db:drop db:create db:migrate
Commenting out the user.rb file but it did not solve the issue
I think the error is due to the gem devise or gem rails_admin, But I cannot work out the solution.
Gemfile :
source 'https://rubygems.org'
ruby '2.6.0'
gem 'grape'
gem 'bootsnap', require: false
gem 'devise'
gem 'jbuilder', '~> 2.0'
gem 'pg', '~> 0.21'
gem 'puma'
gem 'rails', '5.2.2'
gem 'redis'
gem "mini_magick"
gem "chartkick"
gem 'country-select'
gem 'rails_admin', '~> 1.3'
gem 'activestorage-validator'
gem 'rubyzip', '>= 1.2.1'
gem 'axlsx', git: 'https://github.com/randym/axlsx.git', ref: 'c8ac844'
gem 'axlsx_rails'
gem 'autoprefixer-rails'
gem 'bootstrap-sass', '~> 3.3'
gem 'font-awesome-sass', '~> 5.5.0'
gem 'sassc-rails'
gem 'simple_form'
gem 'uglifier'
gem 'webpacker'
group :development do
gem 'web-console', '>= 3.3.0'
end
group :development, :test do
gem 'pry-byebug'
gem 'pry-rails'
gem 'listen', '~> 3.0.5'
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
gem 'dotenv-rails'
end
Content of database.yml :
default: &default
adapter: postgresql
encoding: utf-8
database: caoee
username: mat
password: ***
pool: 5
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
development:
<<: *default
adapter: postgresql
encoding: utf-8
database: caoee
username: mat
password: ***
pool: 5
test:
<<: *default
adapter: postgresql
encoding: utf-8
database: caoee
username: mat
password: ***
pool: 5
production:
adapter: postgresql
encoding: utf-8
database: caoee
username: mat
password: ***
pool: 5
Postgresql roles:
List of roles
Role name | Attributes | Member of
-----------------------------------
mat | Superuser, Create role, Create DB | {}
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS|{}
Are you running that command RAILS_ENV=production ... Locally?
Because that will just run the command locally, with production settings.
You need to reset the database on your Azure server. I'm not familiar with the Azure CLI but I'm sure there's commands to reset the DB remotely.

Rails and mysql2 gem malformed packet

My gemfile:
source 'https://rubygems.org'
gem 'rails', '4.2.8'
gem 'bootstrap-sass', '~> 3.3.7'
gem 'font-awesome-rails'
gem 'sqlite3'
gem 'mysql2'
gem 'sass-rails', '~> 5.0.4'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'turbolinks'
gem 'jbuilder', '~> 1.2'
group :doc do
gem 'sdoc', require: false
end
my database config:
default: &default
adapter: mysql2
pool: 25
timeout: 5000
encoding: utf8
development:
<<: *default
host: 127.0.0.1
database: asteriskcdrdb
username: root
password: pwd3lfga
port: 13306
In console I have this error after I launch the console and try to read from a table inside db:
Mysql2::Error: Malformed packet
from /Users/michele/.rvm/gems/ruby-2.2.2/gems/mysql2-0.4.6/lib/mysql2/client.rb:89:in `connect'
from /Users/michele/.rvm/gems/ruby-2.2.2/gems/mysql2-0.4.6/lib/mysql2/client.rb:89:in `initialize'
from /Users/michele/.rvm/gems/ruby-2.2.2/gems/activerecord-4.2.8/lib/active_record/connection_adapters/mysql2_adapter.rb:18:in `new'

postgresql_adapter error running rails scaffold

Following the railstutorial instructions here I am getting the error:
/home/devname/.rvm/gems/ruby-2.3.1/gems/activerecord-5.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb:675:in `rescue in connect': FATAL: role "devname" does not exist
I also get this if I try "rails console development".
Here is my database.yml (minus comments):
default: &default
adapter: sqlite3
pool: 5
timeout: 5000
development:
<<: *default
database: db/development.sqlite3
test:
<<: *default
database: db/test.sqlite3
production:
<<: *default
database: db/production.sqlite3
and my gemfile:
source 'https://rubygems.org'
gem 'rails', '5.0.0'
gem 'puma', '3.4.0'
gem 'sass-rails', '5.0.5'
gem 'uglifier', '3.0.0'
gem 'coffee-rails', '4.2.1'
gem 'jquery-rails', '4.1.1'
gem 'turbolinks', '5.0.0'
gem 'jbuilder', '2.4.1'
group :development, :test do
gem 'sqlite3', '1.3.11'
gem 'byebug', '9.0.0', platform: :mri
end
group :development do
gem 'web-console', '3.1.1'
gem 'listen', '3.0.8'
gem 'spring', '1.7.2'
gem 'spring-watcher-listen', '2.0.0'
end
group :production do
gem 'pg', '0.18.4'
end
I am at a loss, any help much appreciated.
Try to run your app in development mode
rails server -e development

Rails: Change my development database from sqlite to postgresql

I've got a Rails app which currently uses sqlite in development and postgresql in production on Heroku. However, I'm trying to change this so that I use postgresql in development.
My Gemfile currently looks like this:
source 'https://rubygems.org'
gem 'rails', '4.2.2'
gem 'bcrypt', '3.1.7'
gem 'bootstrap-sass', '3.2.0.0'
gem 'sass-rails', '5.0.2'
gem 'uglifier', '2.5.3'
gem 'coffee-rails', '4.1.0'
gem 'jquery-rails', '4.0.3'
gem 'jquery-ui-rails', '~> 4.2.1'
gem 'turbolinks', '2.3.0'
gem 'jquery-turbolinks'
gem 'jbuilder', '2.2.3'
gem 'sdoc', '0.4.0', group: :doc
gem 'chart-js-rails'
gem 'gon'
gem 'lodash-rails'
group :development, :test do
#gem 'sqlite3', '1.3.9'
gem 'pg', '0.17.1'
gem 'byebug', '3.4.0'
gem 'web-console', '2.0.0.beta3'
gem 'spring', '1.1.3'
end
group :production do
gem 'pg', '0.17.1'
gem 'rails_12factor', '0.0.2'
gem 'puma', '3.1.0'
end
So in the development group I've replaced the 'sqlite3' gem with the 'pg' gem.
I've modified the database.yml to look something like this:
default: &default
adapter: postgresql
host: localhost
pool: 5
timeout: 5000
development:
<<: *default
database: abc_development
username: abc
password: password1
test:
<<: *default
database: abc_test
username: abc
password: password1
production:
<<: *default
database: abc_production
username: abc
password: password1
I've executed bundle install --without production however, when I try bundle exec rake db:create db:migrate I receive the following error:
Specified 'postgresql' for database adapter, but the gem is not loaded. Add `gem 'pg'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).
As far I see Rails is right: you specified the pg gem only in group production, but you said you want to use it also in development.
So just move it from the production group to the beginning of your Gemfile

rake figaro:heroku is returning an error with sqlite3

I am trying to set up my app on Heroku and as I understand it the issue I am having is resulting from trying to run rake figaro:heroku
Every time I run it I get the following error:
rake aborted!
LoadError: cannot load such file -- sqlite3/database
C:/Users/Zac/GitHub/Bitsy/config/application.rb:7:in `<top (required)>'
C:/Users/Zac/GitHub/Bitsy/Rakefile:4:in `<top (required)>'
My gem file is set up as such:
source 'https://rubygems.org'
ruby '1.9.3'
gem 'rails', '4.0.4'
gem 'sass-rails', '~> 4.0.2'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 1.2'
gem 'bootstrap-sass', '~> 3.2.0'
gem 'autoprefixer-rails'
gem "paperclip", "~> 3.0"
gem "paperclip-dropbox", ">= 1.1.7"
gem "figaro"
gem 'devise'
group :production do
gem 'pg'
gem 'rails_12factor'
end
group :development, :test do
gem 'sqlite3'
end
group :doc do
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', require: false
end
And my database.yml is as:
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000
production:
adapter: sqlite3
database: db/production.sqlite3
pool: 5
timeout: 5000
I have changed the production adapter and database previously and it doesn't seem to make a difference. I have spent about 5 hours searching for help on this to no avail so if anyone could point me in the right direction I would be very appreciative.
you cannot use sqlite3 on Heroku.. you have to use Postgres (you may already know that).
You should try to use the same db in development as production to avoid inconsistencies, so in this case, use PG in every environment.
.. but to fix your problem, try changing the database.yml production entry to:
production:
adapter: postgresql
database: your_app_production
pool: 5
timeout: 5000
that should work

Resources