2

For 2 hours now, i have been trying to get mailer working in heroku.

I am using ruby on rails and my code worked fine until i tried to setup mailer with gmail per this guide.

i have added these lines to my /config/environments/production.rb:

  config.action_mailer.default_url_options = { :host => 'gigitt.herokuapp.com' }
  Rails.application.routes.default_url_options[:host] = 'gigitt.herokuapp.com'

Everything pushes to heroku fine but when i try to: heroku run rake db:setup I get the following error:

Running `rake db:setup` attached to terminal... up, run.9482
FATAL:  permission denied for database "postgres"
DETAIL:  User does not have CONNECT privilege.
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:651:in `initialize'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:651:in `new'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:651:in `connect'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:242:in `initialize'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:44:in `new'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:44:in `postgresql_connection'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:438:in `new_connection'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:448:in `checkout_new_connection'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:422:in `acquire_connection'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:349:in `block in checkout'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/monitor.rb:211:in `mon_synchronize'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:348:in `checkout'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:263:in `block in connection'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/monitor.rb:211:in `mon_synchronize'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:262:in `connection'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:567:in `retrieve_connection'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_handling.rb:113:in `retrieve_connection'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_handling.rb:87:in `connection'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/tasks/postgresql_database_tasks.rb:8:in `connection'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/tasks/postgresql_database_tasks.rb:17:in `create'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/tasks/database_tasks.rb:93:in `create'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/tasks/database_tasks.rb:107:in `block in create_current'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/tasks/database_tasks.rb:275:in `block in each_current_configuration'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/tasks/database_tasks.rb:274:in `each'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/tasks/database_tasks.rb:274:in `each_current_configuration'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/tasks/database_tasks.rb:106:in `create_current'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.1/lib/active_record/railties/databases.rake:17:in `block (2 levels) in <top (required)>'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/task.rb:240:in `call'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/task.rb:240:in `block in execute'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/task.rb:235:in `each'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/task.rb:235:in `execute'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/task.rb:179:in `block in invoke_with_call_chain'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/monitor.rb:211:in `mon_synchronize'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/task.rb:172:in `invoke_with_call_chain'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/task.rb:201:in `block in invoke_prerequisites'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/task.rb:199:in `each'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/task.rb:199:in `invoke_prerequisites'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/task.rb:178:in `block in invoke_with_call_chain'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/monitor.rb:211:in `mon_synchronize'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/task.rb:172:in `invoke_with_call_chain'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/task.rb:201:in `block in invoke_prerequisites'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/task.rb:199:in `each'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/task.rb:199:in `invoke_prerequisites'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/task.rb:178:in `block in invoke_with_call_chain'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/monitor.rb:211:in `mon_synchronize'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/task.rb:172:in `invoke_with_call_chain'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/task.rb:165:in `invoke'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:150:in `invoke_task'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:106:in `block (2 levels) in top_level'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:106:in `each'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:106:in `block in top_level'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:115:in `run_with_threads'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:100:in `top_level'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:78:in `block in run'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:176:in `standard_exception_handling'
/app/vendor/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:75:in `run'
/app/bin/rake:4:in `<main>'
Couldn't create database for {"adapter"=>"postgresql",

Once i remove those lines, i get this error:

2015-04-30T21:15:21.935684+00:00 app[web.1]: ActionView::Template::Error (Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true):

So i need the lines but it wont work with it, any ideas?

3
  • try pg:setup instead of db Commented Apr 30, 2015 at 21:43
  • Don't know how to build task 'pg:setup' is the error i get Commented Apr 30, 2015 at 21:45
  • Why are you running db:setup? Heroku doesn't let you create databases like that. Commented Apr 30, 2015 at 21:45

2 Answers 2

10

rake db:setup attempts to create the database, you can't do that on Heroku using rake. Do you have a pg database created? You said your code worked fine until the mailer, so I'm guessing you do. If you want to run migrations, just run rake db:migrate.

Sign up to request clarification or add additional context in comments.

4 Comments

yes, the db is running fine. i just cant seem to get the app to work for email recovery, that is what seems to break it.
Right, but why are you running db:setup? What told you to do that and what does that have to do w/email?
nothing told me, i had just done it before and never had an issue with it. i have even created a new app and did not run db:setup and had no luck
It will work locally but not on heroku. Do you have migrations? If not have you tried your email changes? This doesn't seem like a problem.
2

Ok, well i got it working. here is my production.rb:

  config.action_mailer.default_url_options = { :host => 'http://gigitt.herokuapp.com' }
  Rails.application.routes.default_url_options[:host] = 'http://gigitt.herokuapp.com'
  config.action_mailer.delivery_method = :smtp
  # SMTP settings for gmail
  config.action_mailer.smtp_settings = {
   address:               "smtp.gmail.com",
   port:                  587,
   domain:                ENV["GMAIL_DOMAIN"],
   authentication:        "plain",
   enable_starttls_auto:  true,
   user_name:             ENV['GMAIL_USERNAME'],
   password:              ENV['GMAIL_PASSWORD']
  }
end

my .env:

GMAIL_DOMAIN=mail.website.com.com
[email protected]
GMAIL_PASSWORD=password

i pushed the commit to heroku, did not run heroku run rake db:setup instead just ran heroku run rake db:migrate. now it is all working :-D

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.