Heroku / devise - लिंक करने के लिए होस्ट होस्ट करना! कृपया प्रदान करें: होस्ट पैरामीटर या default_url_options सेट करें: [होस्ट]


178

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

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

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

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

environment / development.rb और वातावरण / 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 और मेरे env / dev.rb में डाल दिया है (env.rb में नहीं है क्योंकि मुझे लगता है कि यह एक रेल 3 ऐप है)

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

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

User.create(:username => "test", :email => "test@test.com", :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'

जवाबों:


243

आपको इसे अपने साथ जोड़ने की आवश्यकता है environment.rb

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

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


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

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

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

संस्करण के आधार पर, यह अंदर जाना चाहिए production.rb, नहीं environment.rb


नमस्ते सैम! मुझे खेद है लेकिन मुझे यह नहीं मिला। मैं सिर्फ अपने env.rb में लाइन config.action_mailer.default_url_options = {: host => 'localhost'} जोड़ता हूं, लेकिन मेरे रेल 3 ऐप हरकोक पर क्रैश होते हैं। क्या मुझे env / prod.rb पर भी कुछ डालना था? (क्षमा करें, मेरी अंग्रेजी इतनी-इतनी है ..)
बेनोइटर

इसके अलावा, क्या मुझे अपने रेल एप्लिकेशन को उत्पादन मोड में रखना होगा? धन्यवाद!
20

1
:host => 'yourapp.heroku.com' यह आपका डोमेन होना चाहिए। उदाहरण के लिए, यदि आपका डोमेन yahoo.com है, तो यह होना चाहिए yahoo.heroku.comया यदि आप पहले से ही कस्टम डोमेन सेट करते हैं तो यह सिर्फ आपका url होगाyahoo.com
thenengah

1
धन्यवाद सैम, मैं समाधान मिल। तथ्य यह है कि मेरे पास प्रेषक एडऑन नहीं था और मेरा smtp कॉन्फ़िगर नहीं हुआ है। आपके सभी बैकअप के लिए बहुत धन्यवाद!
बेनोइट्र

1
यह नहीं होने जा रहा है config.action_mailer.default_url_options = { :host => 'yourapp.herokuapp.com', बस के विपरीत config.action_mailer.default_url_options = { :host => 'yourapp.heroku.com'?
मौदुलस

37

ठीक,

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

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

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


मुझे यह त्रुटि तब मिलती है जब मैं production.rb: /app/.bundle/gems/ruby/1.9.1/gems/railties-3.0.7/lib/ रेल / रेलेटी / कॉन्फ़िगरेशन.rb: 77: में संदर्भित करता हूं। method_missing': undefined method एक्शन_मेलर '# # रेल के लिए: आवेदन :: कॉन्फ़िगरेशन: 0x0000000241f760> (NoMethodError)
लारन इवांस

मुझे यकीन नहीं है कि मैं यहां मदद कर सकता हूं ... क्या आपने इसे ब्लॉक के अंदर संदर्भित किया था? (वेबसाइट :: Application.configure do ... config.action_mailer.default_url_options = {: host => 'yourapp.heroku.com'} ... अंत)
benoitr

6
अब प्रेषक कमांड हेरोकू ऐडऑन है: सेंडग्रिड जोड़ें: स्टार्टर ( devcenter.heroku.com/articles/sendgrid पर उपयोग विवरण देखें )
डैनी

24

ऊपर कोडलगॉट का काम करता है, लेकिन हम कुछ और अधिक लचीला चाहते थे, इसलिए हमने ऐसा किया:

हेरोकू पर, हम मचान और परीक्षण के लिए कई उत्पादन वातावरण चलाते हैं, इसलिए हमें production.rb पर्यावरण फ़ाइल के लिए एक लचीला समाधान की आवश्यकता होती है।

उत्पादन में

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

इसके बाद अपने ऐप के लिए MAILER_URL पर्यावरण चर सेट करें

heroku config:set MAILER_URL=my-awesome-app.herokuapp.com --app my-awesome-app

18

यदि आप देवदार पर चल रहे हैं :

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

13

मुझे उत्पादन वातावरण में काम करने के लिए कई चीजें करनी थीं : मेरी production.rbफ़ाइल के अंदर (/config/en एन्वायरनमेंट /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
इस default_url_optionsत्रुटि की वजह से एक त्रुटि हुई जिसने मेरी संपत्ति को असफल कर दिया, सिर्फ फी। जब मैंने इसे वापस '=' होस्ट में बदल दिया: 'myappsname.herokuapp.com'} 'यह काम किया।
लिज़

0

इतने सारे शोध के बाद काम करने वाला,

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

    class ApplicationMailer < ActionMailer::Base
      default from: 'yourmail@gmail.com'
      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:            'yourmail@gmail.com',
      password:             'yourgmailpassword',
      authentication:       'login',
      enable_starttls_auto: true
    }
  3. IMAP / POP टैब को अग्रेषित करने में अपनी Gmail सेटिंग से IMAP सक्षम करें ।

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

अब तुम जाने के लिए अच्छे हो। :)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.