ruby on rails - Heroku/devise-लिंक करने के लिए मेजबान लापता! कृपया प्रदान करें: होस्ट पैरामीटर या default_url_options सेट करें




ruby-on-rails actionmailer (5)

आपको इसे अपने environment.rb जोड़ना होगा। environment.rb

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

सुनिश्चित करें कि आप host को अपने उत्पादन यूआरएल में बदल दें और इसे स्थानीय स्तर पर विकास के लिए रखें। यह मेलर के लिए है, इसे पुष्टि आदि जैसे नोटिस भेजने के लिए एक डिफ़ॉल्ट ईमेल की आवश्यकता है ...

आपको कंसोल से उसके हेरोकू सर्वर heroku logs लॉग पर लॉग जांचना चाहिए और यह आपको सटीक त्रुटि बताएगा।

जब आप उसकेोकू को दबाते हैं तो आपको heroku subdomain के साथ environment.rb फ़ाइल को कॉन्फ़िगर करने की आवश्यकता होती है:

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

संस्करण के आधार पर, यह उत्पादन.आरबी में जाना चाहिए, environment.rb नहीं। environment.rb

मैं अपने ऐप को उसकेोकू पर धक्का देने की कोशिश कर रहा हूं। मैं अभी भी देव में हूँ। मैं पुष्टिकरण मॉड्यूल के साथ तैयार का उपयोग करें।

जब मैं उपयोगकर्ता को उसके कंसोल कंसोल के साथ जोड़ने का प्रयास करता हूं तो मुझे यह त्रुटि मिली:

Missing host to link to! Please provide :host parameter or set default_url_options[:host]

परीक्षण और देव पर्यावरण में मेरे पास निम्न पंक्ति है:

वातावरण / विकास.आरबी और वातावरण / test.rb

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

मैंने उत्पादन वातावरण में कुछ स्थापित नहीं किया है।

मैंने धक्का देने की कोशिश की है

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

लेकिन यह भी काम नहीं करता है ..

मैं वेब पर देखता हूं कि यह एक्शनमेलर से संबंधित हो सकता है लेकिन मुझे नहीं पता कि मुझे क्या कॉन्फ़िगर करना है। आपके विचार के लिए बहुत धन्यवाद!

संपादित:

नमस्ते,

जब मैं उसकेोकू पर धक्का देता हूं तो मेरा ऐप क्रैश नहीं होने के लिए मैंने इसे अपने env / test.rb और my env / dev.rb में रखा है (env.rb में नहीं, मुझे लगता है कि ऐसा इसलिए है क्योंकि यह रेल 3 एप है)

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

लेकिन जब मैंने ह्यूकोक कंसोल में उपयोगकर्ता बनाने की कोशिश की:

User.create(:username => "test", :email => "[email protected]", :password => "test1234", :password_confirmation => "test1234", :confirmed_at => "2010-11-03 14:11:15.520128")

यहां मुझे मिली त्रुटियां हैं:

ActionView::Template::Error: Missing host to link to! Please provide :host parameter or set default_url_options[:host]
/home/slugs/.../mnt/.bundle/gems/ruby/1.8/gems/actionpack-3.0.0/lib/action_dispatch/routing/route_set.rb:473:in `url_for'
/home/slugs/.../mnt/.bundle/gems/ruby/1.8/gems/actionpack-3.0.0/lib/action_dispatch/routing/url_for.rb:132:in `url_for'
/home/slugs/.../mnt/.bundle/gems/ruby/1.8/gems/actionpack-3.0.0/lib/action_view/helpers/url_helper.rb:99:in `url_for'
/home/slugs/.../mnt/.bundle/gems/ruby/1.8/gems/actionpack-3.0.0/lib/action_dispatch/routing/route_set.rb:195:in `user_confirmation_url'

संपादित (2)

जब मैं कंसोल पर हेरोकू लॉग टाइप करता हूं तो मुझे यह ==> production.log <== मिल गया है, इसलिए मुझे लगता है कि जब कोई उसकेोकू पर तैनात होता है तो यह पहले से ही उत्पादन में है।

मैं env / prod.rb को इस तरह कॉन्फ़िगर करता हूं:

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

और जब मैं उपयोगकर्ता बनाने का प्रयास करता हूं तो अब मुझे यह त्रुटि है:

Errno::EAFNOSUPPORT: Address family not supported by protocol - socket(2)
/usr/ruby1.8.7/lib/ruby/1.8/net/smtp.rb:551:in `initialize'
/usr/ruby1.8.7/lib/ruby/1.8/net/smtp.rb:551:in `open'
/usr/ruby1.8.7/lib/ruby/1.8/net/smtp.rb:551:in `do_start'
/usr/ruby1.8.7/lib/ruby/1.8/timeout.rb:62:in `timeout'

इतने सारे शोध के बाद कामकाजी एक,

  1. डिफ़ॉल्ट रूप से जोड़ने के लिए मत भूलना : अपने एप्लिकेशनमेलर (application_mailer.rb) में मेल पता के रूप में,

    class ApplicationMailer < ActionMailer::Base
      default from: '[email protected]'
      layout 'mailer'
    end
    
  2. अपने उत्पादन.आरबी में नीचे विन्यास जोड़ें।

    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:            '[email protected]',
      password:             'yourgmailpassword',
      authentication:       'login',
      enable_starttls_auto: true
    }
    
  3. अग्रेषित IMAP / POP टैब में अपनी जीमेल सेटिंग्स से आईएमएपी सक्षम करें।

  4. कम सुरक्षित ऐप्स को अनुमति दें: https://myaccount.google.com/lesssecureapps

अब आप जाने के लिए अच्छे हैं। :)


ठीक,

सबसे पहले आपको इस कमांड लाइन के साथ प्रेषक मणि स्थापित करना होगा:

heroku addons:add sendgrid:free

तो आपको बस अपने env / dev.rb और env / prod.rb को इस तरह कॉन्फ़िगर करना होगा:

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' }

गिट और उसकेोकू पर पुश करें। यह काम करना चाहिए..


मुझे उत्पादन वातावरण में काम करने के लिए कई चीजें करना पड़ा: मेरे उत्पादन.आरबी फ़ाइल (/config/en वातावरणments ]production.rb) के अंदर मैंने निम्नलिखित जोड़ा:

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"

यह रेल 4 और डेविस 3 के साथ है


यदि आप सीडर पर चल रहे हैं:

  1. heroku addons:add sendgrid:free अपने कंसोल से heroku addons:add sendgrid:free

  2. अपने ऐप में config/environments/production.rb पर निम्न पंक्तियां जोड़ें।

  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' }






actionmailer