Heroku/devise - Missing host to link to! Please provide :host parameter or set default_url_options[:host]

前端 未结 6 2009
南方客
南方客 2020-11-28 01:51

I am trying to push my app on heroku. I am still in dev. I use devise with the confirmable module.

When I try to add a user with the heroku console I got this error:<

相关标签:
6条回答
  • 2020-11-28 02:31

    Codeglot's anwser above does the job, but we wanted something a bit more flexible, so we did this:

    On Heroku, we run multiple Production environments for staging and testing, so we need a flexible solution for the production.rb environment file.

    In production.rb

    config.action_mailer.default_url_options = { :host => ENV['MAILER_URL'] }
    

    Then set the MAILER_URL environment variable for your app like so

    heroku config:set MAILER_URL=my-awesome-app.herokuapp.com --app my-awesome-app
    
    0 讨论(0)
  • 2020-11-28 02:32

    If you're running on Cedar:

    1. run heroku addons:add sendgrid:free from your console.

    2. Add the following lines to config/environments/production.rb in your app.

    .

      ActionMailer::Base.smtp_settings = {
        :address        => 'smtp.sendgrid.net',
        :port           => '587',
        :authentication => :plain,
        :user_name      => ENV['SENDGRID_USERNAME'],
        :password       => ENV['SENDGRID_PASSWORD'],
        :domain         => 'heroku.com'
      }
    
      ActionMailer::Base.delivery_method = :smtp
    
      config.action_mailer.default_url_options = { :host => 'YOUR-DOMAIN-HERE.COM' }
    
    0 讨论(0)
  • 2020-11-28 02:39

    The working one after so many research,

    1. Don't forget to add default from: mail address in your ApplicationMailer (application_mailer.rb) as,

      class ApplicationMailer < ActionMailer::Base
        default from: 'yourmail@gmail.com'
        layout 'mailer'
      end
      
    2. Add the below configuration in your production.rb.

      config.action_mailer.default_url_options = 
        { :host => 'yourapp.herokuapp.com' }
      config.action_mailer.delivery_method = :smtp
      config.action_mailer.smtp_settings = {
        address:              'smtp.gmail.com',
        port:                 587,
        domain:               'heroku.com',
        user_name:            'yourmail@gmail.com',
        password:             'yourgmailpassword',
        authentication:       'login',
        enable_starttls_auto: true
      }
      
    3. Enable IMAP from your Gmail settings in Forwarding IMAP/POP tab.

    4. Allow less secure apps: ON from https://myaccount.google.com/lesssecureapps

    You're now good to go. :)

    0 讨论(0)
  • 2020-11-28 02:45

    I had to do a number of things to get it to work in the production environment: Inside of my production.rb file (/config/environments/production.rb) I added the following:

    Rails.application.routes.default_url_options[:host] = 'myappsname.herokuapp.com'
    config.action_mailer.delivery_method = :smtp
    config.action_mailer.perform_deliveries = true
    config.action_mailer.raise_delivery_errors = false
    config.action_mailer.default :charset => "utf-8"
    

    This is with Rails 4 and Devise 3

    0 讨论(0)
  • 2020-11-28 02:46

    You need to add this to your environment.rb

      config.action_mailer.default_url_options = { :host => 'localhost' }
    

    Make sure you change host to your production url and keep it localhost for development. This is for the mailer, it needs a default email to send out notices such as confirmations etc...


    You should check the logs on the heroku server heroku logs run that from the console and it will tell you the exact error.

    When you push to heroku you need to configure the environment.rb file with the heroku subdomain:

    config.action_mailer.default_url_options = { :host => 'yourapp.heroku.com' }
    

    Depending upon version, this should go in production.rb, not environment.rb.

    0 讨论(0)
  • 2020-11-28 02:54

    Ok,

    First you have to install the sendgrid gem with this command line:

    heroku addons:add sendgrid:free
    

    Then you just have to configure your env/dev.rb and env/prod.rb like this:

    env/dev.rb

    config.action_mailer.default_url_options = { :host => 'localhost:3000' }
    

    env/prod.rb

    config.action_mailer.default_url_options = { :host => 'yourapp.heroku.com' }
    

    Push on git and heroku. It should work..

    0 讨论(0)
提交回复
热议问题