54

Help me please, I've finished 11 chapters of the rails tutorial, deployed my app to heroku (locally it worked perfectly) and it crashing all time. I'm using rails 5.2.2 After execution of command $heroku run rails console I'm receiving this:

Traceback (most recent call last):
    92: from /app/bin/rails:9:in `<main>'
    91: from /app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:291:in `require'
    90: from /app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:257:in `load_dependency'
    89: from /app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:291:in `block in require'
    88: from /app/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:29:in `require'
    87: from /app/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:20:in `require_with_bootsnap_lfi'
    86: from /app/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/loaded_features_index.rb:65:in `register'
    85: from /app/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `block in require_with_bootsnap_lfi'
    84: from /app/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require'
    83: from /app/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/commands.rb:18:in `<main>'
    82: from /app/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/command.rb:46:in `invoke'
    81: from /app/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/command/base.rb:65:in `perform'
    80: from /app/vendor/bundle/ruby/2.5.0/gems/thor-0.20.3/lib/thor.rb:387:in `dispatch'
     6: from /app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/encrypted_configuration.rb:21:in `read'
     5: from /app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/encrypted_file.rb:42:in `read'
     4: from /app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/encrypted_file.rb:79:in `decrypt'
     3: from /app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/messages/rotator.rb:21:in `decrypt_and_verify'
     2: from /app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/message_encryptor.rb:157:in `decrypt_and_verify'
     1: from /app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/message_encryptor.rb:183:in `_decrypt'
/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/message_encryptor.rb:206:in `rescue in _decrypt': ActiveSupport::MessageEncryptor::InvalidMessage (ActiveSupport::MessageEncryptor::InvalidMessage)

Also, I've read this topic Running a rails server in production locally (InvalidMessage error) and haven't found files master.key and credentials.yml.enc on my PC.

Also here is my production config:

Rails.application.configure do
  # Settings specified here will take precedence over those in config/application.rb.

  # Code is not reloaded between requests.
  config.cache_classes = true

  # Eager load code on boot. This eager loads most of Rails and
  # your application in memory, allowing both threaded web servers
  # and those relying on copy on write to perform better.
  # Rake tasks automatically ignore this option for performance.
  config.eager_load = true

  # Full error reports are disabled and caching is turned on.
  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true

  # Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"]
  # or in config/master.key. This key is used to decrypt credentials (and other encrypted files).
  # config.require_master_key = true

  # Disable serving static files from the `/public` folder by default since
  # Apache or NGINX already handles this.
  config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?

  # Compress JavaScripts and CSS.
  config.assets.js_compressor = :uglifier
  # config.assets.css_compressor = :sass

  # Do not fallback to assets pipeline if a precompiled asset is missed.
  config.assets.compile = false

  # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb

  # Enable serving of images, stylesheets, and JavaScripts from an asset server.
  # config.action_controller.asset_host = 'http://assets.example.com'

  # Specifies the header that your server uses for sending files.
  # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
  # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX

  # Store uploaded files on the local file system (see config/storage.yml for options)
  config.active_storage.service = :local

  # Mount Action Cable outside main process or domain
  # config.action_cable.mount_path = nil
  # config.action_cable.url = 'wss://example.com/cable'
  # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ]

  # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
  config.force_ssl = true

  # Use the lowest log level to ensure availability of diagnostic information
  # when problems arise.
  config.log_level = :debug

  # Prepend all log lines with the following tags.
  config.log_tags = [ :request_id ]

  # Use a different cache store in production.
  # config.cache_store = :mem_cache_store

  # Use a real queuing backend for Active Job (and separate queues per environment)
  # config.active_job.queue_adapter     = :resque
  # config.active_job.queue_name_prefix = "sample_app_#{Rails.env}"

  config.action_mailer.perform_caching = false

  # Ignore bad email addresses and do not raise email delivery errors.
  # Set this to true and configure the email server for immediate delivery to raise delivery errors.
  # config.action_mailer.raise_delivery_errors = false

  # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
  # the I18n.default_locale when a translation cannot be found).
  config.i18n.fallbacks = true

  # Send deprecation notices to registered listeners.
  config.active_support.deprecation = :notify

  # Use default logging formatter so that PID and timestamp are not suppressed.
  config.log_formatter = ::Logger::Formatter.new

  # Use a different logger for distributed setups.
  # require 'syslog/logger'
  # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name')

  if ENV["RAILS_LOG_TO_STDOUT"].present?
    logger           = ActiveSupport::Logger.new(STDOUT)
    logger.formatter = config.log_formatter
    config.logger    = ActiveSupport::TaggedLogging.new(logger)
  end

  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :smtp
  host = 'calm-spire-36002.herokuapp.com'
  config.action_mailer.default_url_options = { host: host }
  ActionMailer::Base.smtp_settings = {
    :address        => 'smtp.sendgrid.net',
    :port           => '587',
    :authentication => :plain,
    :user_name      => ENV['SENDGRID_USERNAME'],
    :password       => ENV['SENDGRID_PASSWORD'],
    :domain         => 'heroku.com',
    :enable_starttls_auto => true
  }

  # Do not dump schema after migrations.
  config.active_record.dump_schema_after_migration = false
end

And I'm receiving these errors when deploying to heroku:

Counting objects: 23, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (23/23), done.
Writing objects: 100% (23/23), 2.17 KiB | 1.08 MiB/s, done.
Total 23 (delta 16), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Ruby app detected
remote: -----> Compiling Ruby/Rails
remote: -----> Using Ruby version: ruby-2.5.3
remote: -----> Installing dependencies using bundler 1.15.2
remote:        Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment
remote:        Your Gemfile lists the gem pg (>= 0) more than once.
remote:        You should probably keep only one of them.
remote:        While it's not a problem now, it could cause errors if you change the version of one of them later.
remote:        Warning: the running version of Bundler (1.15.2) is older than the version that created the lockfile (1.17.2). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.
remote:        Fetching gem metadata from https://rubygems.org/.........
remote:        Fetching version metadata from https://rubygems.org/..
remote:        Fetching dependency metadata from https://rubygems.org/.
remote:        Using rake 12.3.2
remote:        Using concurrent-ruby 1.1.4
remote:        Using minitest 5.11.3
remote:        Using thread_safe 0.3.6
remote:        Using builder 3.2.3
remote:        Using erubi 1.8.0
remote:        Using mini_portile2 2.4.0
remote:        Using crass 1.0.4
remote:        Using rack 2.0.6
remote:        Using nio4r 2.3.1
remote:        Using websocket-extensions 0.1.3
remote:        Using mini_mime 1.0.1
remote:        Using arel 9.0.0
remote:        Using mimemagic 0.3.3
remote:        Using execjs 2.7.0
remote:        Using bcrypt 3.1.12
remote:        Using msgpack 1.2.6
remote:        Using rb-fsevent 0.10.3
remote:        Using ffi 1.10.0
remote:        Using will_paginate 3.1.6
remote:        Using bundler 1.15.2
remote:        Using coffee-script-source 1.12.2
remote:        Using method_source 0.9.2
remote:        Using thor 0.20.3
remote:        Using multi_json 1.13.1
remote:        Using pg 1.1.4
remote:        Using puma 3.12.0
remote:        Using tilt 2.0.9
remote:        Using turbolinks-source 5.2.0
remote:        Using tzinfo 1.2.5
remote:        Using nokogiri 1.10.0
remote:        Using rack-test 1.1.0
remote:        Using i18n 0.9.5
remote:        Using sprockets 3.7.2
remote:        Using websocket-driver 0.7.0
remote:        Using autoprefixer-rails 9.4.4
remote:        Using uglifier 4.1.20
remote:        Using marcel 0.3.3
remote:        Using mail 2.7.1
remote:        Using rb-inotify 0.10.0
remote:        Using coffee-script 2.4.1
remote:        Using turbolinks 5.2.0
remote:        Using bootstrap-will_paginate 1.0.0
remote:        Using bootsnap 1.3.2
remote:        Using loofah 2.2.3
remote:        Using activesupport 5.2.2
remote:        Using faker 1.7.3
remote:        Using sass-listen 4.0.0
remote:        Using rails-html-sanitizer 1.0.4
remote:        Using sass 3.7.3
remote:        Using bootstrap-sass 3.3.7
remote:        Using rails-dom-testing 2.0.3
remote:        Using globalid 0.4.2
remote:        Using activemodel 5.2.2
remote:        Using jbuilder 2.8.0
remote:        Using activerecord 5.2.2
remote:        Using actionview 5.2.2
remote:        Using actionpack 5.2.2
remote:        Using activejob 5.2.2
remote:        Using actioncable 5.2.2
remote:        Using activestorage 5.2.2
remote:        Using railties 5.2.2
remote:        Using sprockets-rails 3.2.1
remote:        Using actionmailer 5.2.2
remote:        Using coffee-rails 4.2.2
remote:        Using jquery-rails 4.3.3
remote:        Using rails 5.2.2
remote:        Using sass-rails 5.0.7
remote:        Bundle complete! 31 Gemfile dependencies, 68 gems now installed.
remote:        Gems in the groups development and test were not installed.
remote:        Bundled gems are installed into ./vendor/bundle.
remote:        Bundle completed (3.30s)
remote:        Cleaning up the bundler cache.
remote:        Your Gemfile lists the gem pg (>= 0) more than once.
remote:        You should probably keep only one of them.
remote:        While it's not a problem now, it could cause errors if you change the version of one of them later.
remote:        Warning: the running version of Bundler (1.15.2) is older than the version that created the lockfile (1.17.2). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.
remote:        The latest bundler is 2.0.1, but you are currently running 1.15.2.
remote:        To update, run `gem install bundler`
remote: -----> Installing node-v10.14.1-linux-x64
remote: -----> Detecting rake tasks
remote: -----> Preparing app for Rails asset pipeline
remote:        Running: rake assets:precompile
remote:        rake aborted!
remote:        ActiveSupport::MessageEncryptor::InvalidMessage: ActiveSupport::MessageEncryptor::InvalidMessage
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/message_encryptor.rb:206:in `rescue in _decrypt'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/message_encryptor.rb:183:in `_decrypt'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/message_encryptor.rb:157:in `decrypt_and_verify'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/messages/rotator.rb:21:in `decrypt_and_verify'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/encrypted_file.rb:79:in `decrypt'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/encrypted_file.rb:42:in `read'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/encrypted_configuration.rb:21:in `read'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/encrypted_configuration.rb:33:in `config'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/encrypted_configuration.rb:38:in `options'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/core_ext/module/delegation.rb:271:in `method_missing'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/config/environments/production.rb:100:in `block in <main>'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/railtie.rb:216:in `instance_eval'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/railtie.rb:216:in `configure'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/config/environments/production.rb:1:in `<main>'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `block in require_with_bootsnap_lfi'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/loaded_features_index.rb:65:in `register'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:20:in `require_with_bootsnap_lfi'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:29:in `require'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:291:in `block in require'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:257:in `load_dependency'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:291:in `require'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/engine.rb:602:in `block (2 levels) in <class:Engine>'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/engine.rb:601:in `each'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/engine.rb:601:in `block in <class:Engine>'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/initializable.rb:32:in `instance_exec'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/initializable.rb:32:in `run'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/initializable.rb:61:in `block in run_initializers'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/initializable.rb:50:in `each'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/initializable.rb:50:in `tsort_each_child'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/initializable.rb:60:in `run_initializers'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/application.rb:361:in `initialize!'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/config/environment.rb:5:in `<main>'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `block in require_with_bootsnap_lfi'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/loaded_features_index.rb:65:in `register'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:20:in `require_with_bootsnap_lfi'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:29:in `require'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:291:in `block in require'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:257:in `load_dependency'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:291:in `require'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/application.rb:337:in `require_environment!'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/application.rb:520:in `block in run_tasks_blocks'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/sprockets-rails-3.2.1/lib/sprockets/rails/task.rb:62:in `block (2 levels) in define'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/rake-12.3.2/exe/rake:27:in `<top (required)>'
remote:        
remote:        Caused by:
remote:        OpenSSL::Cipher::CipherError: 
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/message_encryptor.rb:201:in `final'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/message_encryptor.rb:201:in `_decrypt'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/message_encryptor.rb:157:in `decrypt_and_verify'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/messages/rotator.rb:21:in `decrypt_and_verify'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/encrypted_file.rb:79:in `decrypt'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/encrypted_file.rb:42:in `read'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/encrypted_configuration.rb:21:in `read'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/encrypted_configuration.rb:33:in `config'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/encrypted_configuration.rb:38:in `options'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/core_ext/module/delegation.rb:271:in `method_missing'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/config/environments/production.rb:100:in `block in <main>'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/railtie.rb:216:in `instance_eval'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/railtie.rb:216:in `configure'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/config/environments/production.rb:1:in `<main>'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `block in require_with_bootsnap_lfi'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/loaded_features_index.rb:65:in `register'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:20:in `require_with_bootsnap_lfi'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:29:in `require'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:291:in `block in require'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:257:in `load_dependency'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:291:in `require'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/engine.rb:602:in `block (2 levels) in <class:Engine>'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/engine.rb:601:in `each'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/engine.rb:601:in `block in <class:Engine>'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/initializable.rb:32:in `instance_exec'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/initializable.rb:32:in `run'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/initializable.rb:61:in `block in run_initializers'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/initializable.rb:50:in `each'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/initializable.rb:50:in `tsort_each_child'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/initializable.rb:60:in `run_initializers'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/application.rb:361:in `initialize!'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/config/environment.rb:5:in `<main>'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `block in require_with_bootsnap_lfi'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/loaded_features_index.rb:65:in `register'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:20:in `require_with_bootsnap_lfi'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:29:in `require'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:291:in `block in require'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:257:in `load_dependency'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:291:in `require'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/application.rb:337:in `require_environment!'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2/lib/rails/application.rb:520:in `block in run_tasks_blocks'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/sprockets-rails-3.2.1/lib/sprockets/rails/task.rb:62:in `block (2 levels) in define'
remote:        /tmp/build_f2f890d3b7847e0537bd079a0d608e14/vendor/bundle/ruby/2.5.0/gems/rake-12.3.2/exe/rake:27:in `<top (required)>'
remote:        Tasks: TOP => environment
remote:        (See full trace by running task with --trace)
remote: 
remote:  !
remote:  !     Precompiling assets failed.
remote:  !
remote:  !     Push rejected, failed to compile Ruby app.
remote: 
remote:  !     Push failed
remote: Verifying deploy...
remote: 
remote: !   Push rejected to cryptic-chamber-73265.
remote: 
To heroku.com:cryptic-chamber-73265.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:cryptic-chamber-73265.git'
Promise Preston
  • 24,334
  • 12
  • 145
  • 143

11 Answers11

56

Here are the docs for environmental security on rails https://guides.rubyonrails.org/security.html#environmental-security

In your case, you should have these files

config/master.key
config/credentials.yml.enc

Delete those files and then you can generate them with this:

rails credentials:edit --wait

While the credentials are open, note the master.key string, and then close the editor.

If you have not set the editor, you may need to do

EDITOR="your_editor_name --wait" bin/rails credentials:edit

The file master.key should be ignored by your version control because it is the key rails uses to decrypt the .enc, just commit your credentials.yml.enc and push it to heroku.

For master.key on heroku you can define the environment variable RAILS_MASTER_KEY on your heroku app and set it to the value of master.key.

Now to access the environments variables that you defined on your .enc file you must access them through Rails.application.credentials

ActionMailer::Base.smtp_settings = {
    :address        => 'smtp.sendgrid.net',
    :port           => '587',
    :authentication => :plain,
    :user_name      => Rails.application.credentials.SENDGRID_USERNAME,
    :password       => Rails.application.credentials.SENDGRID_PASSWORD,
    :domain         => 'heroku.com',
    :enable_starttls_auto => true
}
Obromios
  • 15,408
  • 15
  • 72
  • 127
Javier Menéndez Rizo
  • 2,138
  • 3
  • 12
  • 22
  • 1
    Did you checked for this files on your project config/master.key config/credentials.yml.enc ? – Javier Menéndez Rizo Jan 20 '19 at 22:50
  • I just modified the contents of my master.key and tried to run the rails credentials:edit and got the same error. When it tries to decrypt the contents of credentials.yml.enc and the key doesn't work it raises that exception – Javier Menéndez Rizo Jan 20 '19 at 23:36
  • To put the value of master.key to my heroku app RAILS_MASTER_KEY variable I need first to decrypt master.key file? (because value is like "d8d7ffda738459e85a4dbe9be406cb8a") –  Jan 21 '19 at 09:52
  • No, that's the key, put that value in the RAILS_MASTER_KEY variable – Javier Menéndez Rizo Jan 21 '19 at 13:40
  • I'm doing all things right? https://drive.google.com/open?id=1WdVDKiDKOxZhb9IBTAhF8tyni2S8rTJQ Because after that changes I can't deploy my app to heroku :( –  Jan 21 '19 at 14:53
  • update the value of your secret_key_base, if you generated a new master.key and credentials.yml.enc, now your add has a new value for secret_key_base on the encrypted file – Javier Menéndez Rizo Jan 21 '19 at 15:01
  • If I understood correct I need also update the value of secret_key_base -> this value I need to to take from newly generated credentials.yml.enc file? (current key in my heroku app has 1,5 rows of digits and key in credentials.yml.enc has 6 rows of digits) o_O –  Jan 21 '19 at 15:45
  • Yes that's correct, did you pushed your new credentials.yml.enc file to heroku? – Javier Menéndez Rizo Jan 21 '19 at 16:10
  • Yeah, I did it. But I'm devastated. Now I can't push to heroku. I receive error: remote : ! Precompiling assets failed. And this topic https://stackoverflow.com/questions/19650621/heroku-upload-precompiling-assets-failed doesn't help me –  Jan 22 '19 at 13:45
  • Can you put your error stack trace on your question? – Javier Menéndez Rizo Jan 22 '19 at 13:49
  • 2
    Sure, it starts from "And I'm receiving these errors when deploying to heroku:" –  Jan 22 '19 at 13:58
  • I would recommend precompiling assets for production on your local pc and then push the changes. Notice that you are still receiving the same error – Javier Menéndez Rizo Jan 22 '19 at 14:11
40
  1. Remove the credentials:
rm -rf config/credentials.yml.enc
  1. Create a new credentials:
  EDITOR="mate --wait" bin/rails credentials:edit

Hope it's helpful.

Roshan
  • 905
  • 9
  • 21
zofy29
  • 481
  • 4
  • 5
21

For me, it was because the environmental variable (found in the Heroku Settings page in the 'Config Vars' section) held an outdated master key.

Starting with Rails 6, you can have credentials per environment. So, I had credentials for production that differed from those in development; and both of these credentials have their own master key.

The one found here: config/master.key, is for the standard credentials file: config/credentials.yml.enc. The credentials file for production found here: config/credentials/production.yml.enc is encrypted with the production.key found in the same folder here: config/credentials/production.key.

I updated the key in Heroku in the Config Vars to the new production.key and everything deployed correctly.

I hope that this helps. Happy Coding!

*Also, I would recommend, after updating any Config Vars, to restart your dynos on Heroku. This insures that any new environmental variables are taken into account.

To do this, click on the 'More' button in the top right of any page, and then click on 'Restart all dynos'.

CWarrington
  • 659
  • 5
  • 12
  • It's for rails 5.2, Answering with a solutions for a different version is counter to what the OP wants. You can't just expect them to upgrade a rails version to suit your solution. – Richard Sep 03 '21 at 22:20
  • 6
    to add another perspective Richard, it was helpful to me! (a casual googler that _is_ on rails 6) – Cechner Nov 22 '21 at 04:32
  • How do you create a production.key and productions.yml.enc files? I do not have them. I have only the standard ones master.key and credentials.yml.enc. – Yuriy Aug 18 '22 at 18:52
  • 1
    Thank you for this answer. It helped fix my issue. I needed to set my Heroku config var to the key in `config/credentials/production.key`. The main project master key in `config/master` wasn't working – MaxRah Feb 27 '23 at 19:29
  • 2
    @Yuriy, you can run `rails credentials:edit --environment production` to get the production files. Checking this blog that does a great job explaining the various credential files: https://blog.saeloun.com/2019/10/10/rails-6-adds-support-for-multi-environment-credentials#create-credentials-for-production-environment – CWarrington Feb 28 '23 at 23:10
  • @Richard and MaxRah, I’m glad my answer could help you both! Happy Coding! – CWarrington Mar 01 '23 at 02:09
11

the only way for me was to renew my master key.

  1. copy your decrypted credentials
  2. remove the files
  3. regenerate key
  4. read the datas

This post help me https://github.com/rails/rails/issues/32718

Jaycreation
  • 2,029
  • 1
  • 15
  • 30
7

I had this issue when working on a Rails 6 application in Ubuntu 20.04.

The issue was that I was setting/specifying a wrong RAILS_MASTER_KEY environment variable in my .env files in development (.env, .env.development). I just wanted to use it as a placeholder temporarily since I did not need it in my development environment.

This was then throwing the error below when I run a rails command, say rails generate uploader ProductImage:

`rescue in _decrypt': ActiveSupport::MessageEncry ptor::InvalidMessage (ActiveSupport::MessageEncryptor::InvalidMessage)

And even when I try generating a new master.key and the credentials.yml.enc files using rails credentials:edit or EDITOR="code --wait" bin/rails credentials:edit it throws the error below:

key=': key must be 16 bytes (ArgumentError)

Here's how to fix it:

What you have to do is to either provide the correct RAILS_MASTER_KEY environment variable in the .env file(s) or comment out the RAILS_MASTER_KEY environment variable if you are not using it.

That's it.

I hope this helps

Promise Preston
  • 24,334
  • 12
  • 145
  • 143
  • 8
    Note for Rails 6: If you're generating credentials on a per environment basis then one should set the RAILS_MASTER_KEY to the production.key NOT the master.key. You will only have a master.key if you also (accidentally) generated a credentials file without specifying an environment. If you have both, the environments (production.key) take precedence over the master.key. – RJaus Mar 28 '21 at 08:28
  • 4
    @RJaus, on behalf of the entire BreakDiving.io team, we thank you. After 5 months (yes, 5 months) of trying to get SES to work, and trying to figure out Rails Credentials, your tiny comment here was the only explanation on all of the internet that solved the problem. No where on the Rails docs does it say that the Master Key is useless if you use keys on an environmental basis. For 3 weeks working with the AWS team, even they had no idea how to solve this problem. Finally, today, our members can finally... reset their password! You should feel very proud of yourself. We are so grateful. – Monroe Mann May 03 '21 at 20:56
  • 2
    I had this issue when working on a Rails 6 application in Ubuntu 18.04. Your solution helps me. Thanks! – Nelson Mfinda Jul 21 '21 at 09:31
  • 2
    @RJaus This ... sounds bonkers ... and it IS bonkers, that it was just what made my stuff work, too ... :-D Thanks loads! (Debian 10 for me) – Atastor Sep 17 '21 at 13:05
2

I also faced the same problems a few moments later. Also, find a solution for me! basically, I'm using an android device for developing a Ruby on Rails app. the solution is: go to the app config directory. Then backup and remove the following files:

master.key
credentials.yml.enc

then go to terminal or on android, go to termux and write the command on app directory (must check you are on the rails app directory):

$ EDITOR=nano rails credentials:edit

you can also use other editors like Atom on desktops. now a new master.key and temporary non-encrypted credentials file will be created in terminal or termux (for android users). then press "ctrl+x" then "y" And then press enter, then the temporary non-encrypted credential file will be encrypted. now try to do your work. Now you might get a successful output. That's all. Happy Coding.

Notes: some points I get help for writing this answer from: https://github.com/rails/rails/issues/32718

Abrar Jahin
  • 391
  • 2
  • 11
2

1 Delete this 2 files:

config/master.key
config/credentials.yml.enc

2 Run this command:

EDITOR="nano" bundle exec rails credentials:edit
sahil
  • 21
  • 1
1

You need to ask for the master key to you project leader / team leader / coworkers.

With that long key like 3823729sdad29323832idsd you copy it and paste it the master.key file under config folder.

That solve the issue.

0

I have the same issue today, I found that I merge new credentials.yml.enc, so I tried to open EDITOR="code . --wait" rails credentials:edit getting the error listed here.

The solution for me was only deleting that extra empty line in the end of the file, that line was added after merging branches with vs code.

Carlos Gómez
  • 453
  • 7
  • 16
0

All my credentials were set properly, but I had forgot to set the master key in heroku.

How to set the master key on heroku

Go to /config/master.key, copy/paste the master key from the file then set it like so:

heroku config:set RAILS_MASTER_KEY=c9102a13496fdc09430445a6602e3j85
stevec
  • 41,291
  • 27
  • 223
  • 311
0

delete this file in config/credentials.yml.enc and create a new one using EDITOR="mate --wait" bin/rails credentials:edit

Kip
  • 11
  • 1