Rails foreign key issue in Heroku migrate with Postgres - ruby-on-rails

I am trying to deploy a Rails project with Heroku.
In development I am running the Ruby project on AWS Educate Cloud9 and using Sqlite3 as the database.
I can successfully run the Rails project on AWS and migrations work fine also there
$ rails db:migrate
In Production the database is postgres.
This is the Gemfile
source 'https://rubygems.org'
git_source(:github) do |repo_name|
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
"https://github.com/#{repo_name}.git"
end
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.0.7', '>= 5.0.7.2'
# Use sqlite3 as the database for Active Record
#gem 'sqlite3', '~>1.3.0'
#gem 'devise' , '~>4.3.0'
gem 'devise', git: 'https://github.com/plataformatec/devise' #, ref: '88e9a85'
# Use Puma as the app server
gem 'puma', '~> 3.0'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platform: :mri
gem 'sqlite3', '~>1.3.0'
end
group :development do
# Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
gem 'web-console', '>= 3.3.0'
gem 'listen', '~> 3.0.5'
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
end
group :production do
gem 'pg'
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
Using,
$ bundle update
$ bundle install --without production
$ git add .
$ git commit -m "blah"
$ git push origin master
$ git push heroku master
$ heroku run rails db:migrate
This gives an error which tells me that there is an issue with a foreign key, but when I db:migrate in development there is no issue with a foreign key. I only seem to get this error when I migrate in Heroku using 'pg'.

Related

bootsnap `require': cannot load such file -- faraday/request/multipart (LoadError)

Suddenly got this error when starting my rails server
bundle exec rails s
Here is the error message
1: from /Users/michelleroos/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/bootsnap-1.11.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:15:in `require'
/Users/michelleroos/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/bootsnap-1.11.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:15:in `require': cannot load such file -- faraday/request/multipart (LoadError)
I'm not sure if it is something to do with my gem file. I Googled the error and tried the solutions proposed in other SO threads but nothing worked.
What I tried already:
Basically everything in this thread
This thread
And this thread
Here is my gem file
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby '2.5.3'
gem 'google-apis-sheets_v4'
gem 'google_drive'
gem 'dotenv-rails'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.2' #5.2.3
# Use postgresql as the database for Active Record
gem 'pg', '>= 0.18', '< 2.0'
# Use Puma as the app server
gem 'puma', '~> 4.3'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'mini_racer', platforms: :ruby
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
# gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 4.0'
# Use ActiveModel has_secure_password
gem 'bcrypt', '~> 3.1.7'
# Use ActiveStorage variant
# gem 'mini_magick', '~> 4.8'
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
# Reduces boot times through caching; required in config/boot.rb
gem 'bootsnap', '>= 1', require: false #1.1.0
gem 'jquery-rails'
gem 'serialize_json-rails'
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
gem 'rspec-rails'
gem 'factory_bot_rails'
gem 'rails-controller-testing'
gem 'better_errors'
gem 'binding_of_caller'
end
group :development do
# Access an interactive console on exception pages or by calling 'console' anywhere in the code.
gem 'web-console', '>= 3.3.0'
gem 'listen', '>= 3.0.5', '< 3.2'
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
gem 'annotate'
gem 'pry-rails'
end
group :test do
# Adds support for Capybara system testing and selenium driver
gem 'capybara', '>= 2.15'
gem 'selenium-webdriver'
# Easy installation and use of chromedriver to run system tests with Chrome
gem 'chromedriver-helper'
gem 'faker'
gem 'guard-rspec'
gem 'launchy'
gem 'shoulda-matchers'
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
In my case I got this error after fixing an initial error regarding the Spring gem and then after fixing an error regarding Multipart post. After lot of trial and error I decided to undo all the fixes by doing a git reset --hard and then removing the spring and spring-watcher-listen gems from the Gemfile and then uninstalling these 2 gems via the bundle exec gem uninstall gemname command.
I then discovered a new error when trying to run rails s which was about MySQL. Finally after fixing those errors I was able to do a successful rails s. I then added back the 2 gems, ran bundle and had no errors afterwards.

Could not locate Gemfile: gemfile not found

I just installed rails and I got the following message after creating "rails new mySite" and running "bundle install". I know gemfile is in the same folder and I checked it by typing "gem -v". I don't know what went wrong. Below is what I see when I run "bundle env".
bundle env
Before you run bundle install make sure the Gemfile has the proper name.
1 Gemfile instead of gemfile, the file is capitalized and has no file-type.
2 Make sure to cd the terminal location should be in the same location of you Gemfile
Try this
rails new mySite
cd mySite
bundle install
You need to be inside the project home directory to use bundle command.
Hope that helps!
Create a Gemfile and paste this code to the Gemfile.
source 'https://rubygems.org'
git_source(:github) do |repo_name|
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
"https://github.com/#{repo_name}.git"
end
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.1.7'
# Use sqlite3 as the database for Active Record
gem 'sqlite3', '< 1.4'
# Use Puma as the app server
gem 'puma', '~> 3.7'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 4.0'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
# Adds support for Capybara system testing and selenium driver
gem 'capybara', '>= 2.15'
gem 'selenium-webdriver'
end
group :development do
# Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
gem 'web-console', '>= 3.3.0'
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

rake aborted! cannot load such file -- ap

I have build my new rails application and when I am trying to deploy to Apache server while executing bundle exec rake secret I am getting rake aborted! cannot load such file -- ap.This is the URL I have referred to deploy Deploying a Ruby app on a Linux/Unix production server.
Please look into my Gemfile
source 'https://rubygems.org'
git_source(:github) do |repo_name|
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
"https://github.com/#{repo_name}.git"
end
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.1.4'
# Use sqlite3 as the database for Active Record
gem 'mysql2'
# Use Puma as the app server
gem 'puma', '~> 3.7'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 3.0'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
gem 'jquery-rails'
gem 'json'
gem 'jenkins_api_client'
gem 'mailfactory'
gem 'docx','>=0.2.07'
# gem 'jquery-turbolinks'
gem 'net-scp'
gem 'rubyXL'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'bcrypt'
# font awsome
gem "font-awesome-rails"
# parsley validation
gem "parsley-rails"
# devise for athentication
gem 'devise'
# gem "devise_ldap_authenticatable"
gem "toastr-rails"
# datapciker
gem 'bootstrap-datepicker-rails'
# image uploader
gem 'carrierwave'
# Active admin for admin
# gem 'activeadmin'
# To set dynamic value in docx
gem 'sablon'
# State_machine for status
gem 'aasm'
# Soft delete
gem 'paranoia'
# for seed
gem 'seed-fu'
# Net-SSH gem to exec batch file.
gem 'net-ssh'
# Schedule job
gem 'whenever', require: false
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
# Adds support for Capybara system testing and selenium driver
gem 'capybara', '~> 2.13'
gem 'selenium-webdriver'
end
group :development do
# Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
gem 'web-console', '>= 3.3.0'
gem 'listen', '>= 3.0.5', '< 3.2'
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
gem 'pry'
gem 'better_errors'
gem 'binding_of_caller'
gem 'meta_request'
gem "awesome_print", require:"ap"
# gem 'quiet_assets'
gem 'pry-rails'
gem 'bullet'
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
This is my first application i tried to deploy, please help to resolve this issue
My ruby version is
ruby 2.4.3p205 (2017-12-14 revision 61247) [x86_64-linux]
rails version - 5.1.4
This line in the Gemfile seems strange to me
gem "awesome_print", require:"ap"
Can you remove the require: "ap" and check if it works then?

Ruby on Rails failed to push to Heroku [duplicate]

This question already has answers here:
Heroku deployment failed because of sqlite3 gem error
(6 answers)
Closed 5 years ago.
There are so many stackoverflow posts on this issue but I do not know why I am not getting any to work. Here is what my gemfile looks like:
source 'https://rubygems.org'
git_source(:github) do |repo_name|
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
"https://github.com/#{repo_name}.git"
end
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.0.1'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use Puma as the app server
gem 'puma', '~> 3.0'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
gem 'bootstrap-sass', '~> 3.2.0'
gem 'autoprefixer-rails'
# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 3.0'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
gem 'sqlite3', :group => [:development, :test]
group :production do
gem 'thin'
gem 'pg'
end
group :development do
# Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
gem 'web-console', '>= 3.3.0'
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
When I run git push heroku master it gives me an error saying that gem install sqlite3 -v '1.3.13' is not available and needs to be installed(even though I have installed it).
I have tried deleteing the gem lock file, and bundleing and still nothing. I would love if someone was able to tell me where I am going wrong, because I have no idea what is wrong.
Refer to this article:
https://devcenter.heroku.com/articles/sqlite3
Sqlite is not supported by heroku as it uses an ephemeral filesystem so the database would be erased periodically.
You can use sqlite as a development database but you need to use something like
gem 'pg'
in production. You can simply remove sqlite from your gemfile or move it to one of the development / test groups.
If you are using a database in your application you also need to set up the config/database.yml file with the correct configuration.

LoadError in Devise::RegistrationsController#create

I am using the gem of devise and I am getting error LoadError in Devise::RegistrationsController#create cannot load such file -- bcrypt_ext.. I tried to do some research regarding to this problem and also tried to follow the instruction given(https://stackoverflow.com/questions/35422463/loaderror-in-deviseregistrationscontrollercreate-cannot-load-such-file-bc)
But still having this problem. Any suggestion?
NOTE: The guide that I am using is video guide and I am using ruby on rails on windows 7
Gem File
source 'https://rubygems.org'
git_source(:github) do |repo_name|
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
"https://github.com/#{repo_name}.git"
end
# error in devise
gem 'bcrypt-ruby', '~> 3.1', '>= 3.1.5'
# Bundle for authentication
gem 'devise', '~> 4.2', '>= 4.2.1'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.1.0.rc1'
# Use postgresql as the database for Active Record
gem 'pg', '~> 0.18'
# Use Puma as the app server
gem 'puma', '~> 3.7'
# Use SCSS for stylesheets
gem 'sass-rails', github: "rails/sass-rails"
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 3.0'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
# Adds support for Capybara system testing and selenium driver
gem 'capybara', '~> 2.13.0'
gem 'selenium-webdriver'
end
group :development do
# Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
gem 'web-console', '>= 3.3.0'
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
I was also having the same error, and my problem got fixed, please try solution 3
The problem is the compiled windows gem. It would be better if it were deleted and only include the pure ruby version.
Solution one:
You can copy bcrypt_ext.so from \lib\2.1 to \lib the same folder where is bcrypt.rb
Solution two:
You can use the gem install bcrypt --platform=ruby even if I had trouble to select that from rails which it always use the compiled version
Solution three:
git clone https://github.com/codahale/bcrypt-ruby.git
cd bcrypt-ruby
gem build bcrypt.gemspec
gem install gem-compiler
gem compile bcrypt-3.1.10.gem
gem install bcrypt-3.1.10-x64-mingw32.gem --local
Please do one thing and it will solve your problem
remove the version and rest just write this in your Gemfile
gem 'bcrypt-ruby'

Resources