2012-05-09 7 views
6

यूआरएल हेल्पर्स (जैसे root_url) में यूआरएल हेल्पर्स के लिए गलत होस्टनाम ऐप नियंत्रकों बनाम आरएसपीईसी उदाहरणों में एक अलग होस्टनाम देता है। मैं सफलतापूर्वक मेरी रेल में यूआरएल सहायकों के लिए डोमेन सेट करने के लिए सक्षम किया गया है इस तरह एप्लिकेशन:रेल: आरएसपीईसी

class ApplicationController < ActionController::Base 
    def default_url_options 
    {host: "foo.com", only_path: false} 
    end 
end 

उदाहरण के लिए, root_url आउटपुट "http://foo.com/" आवेदन के भीतर लेकिन "http://example.com "मेरे अनुरोध चश्मा में। रेलवे 3.2 में विश्व स्तर पर उन यूआरएल विकल्पों को लागू करने का अनुशंसित तरीका क्या है ताकि वे मेरी चश्मा को प्रभावित कर सकें? यूआरएल विकल्पों को गतिशील होने की आवश्यकता नहीं है।

उत्तर

4

में कुछ इस तरह दिखेगा फ़ीचर चश्मा में, मेजबान! हटा दिया गया है अपने rspec_helper.rb करने के लिए इन करें:

# Configure Capybara expected host 
Capybara.app_host = 'http://lvh.me:3000' 

# Configure actual routes host during test 
before(:each) do 
    if respond_to?(:default_url_options) 
    default_url_options[:host] = 'http://lvh.me:3000' 
    end 
end 
+0

एफवाईआई, यह विफल रहता है अगर परीक्षण नियंत्रक/अनुरोध/सुविधा नहीं है। एक हेल्पर स्पेक, उदाहरण के लिए, 'अपरिभाषित स्थानीय चर या विधि default_url_options' के साथ विफल रहता है। – typeoneerror

2

आप rspec में अपने परीक्षण में ब्लॉक से पहले एक में मेजबान सेट कर सकते हैं:

before :each do 
     host! 'hostgoeshere.com' 
    end 

आप इसे स्थापित करने के लिए विश्व स्तर पर आप अपने spec_helper.rb फ़ाइल डाल सकता है चाहते हैं।

+0

आप के बारे में अधिक विशिष्ट हो सकता है क्या "कुछ" might हो सकता है? – denishaskin

4

बस दान के जवाब में जोड़ने के लिए यह spec_helper.rb

RSpec.configure do |config| 
    # other config options 
    config.before(:each) do 
    host! "localhost:3000" 
    end 
end 
+0

spec_helper में मेरे लिए काम नहीं करता है: NoMethodError: अपरिभाषित विधि 'होस्ट!'। मैं रुपयेपीसी 3.2 का उपयोग कर रहा हूँ। –

0

मैं सफलता के बिना @request.host, host!, और post path, args, {'SERVER_NAME' => my_secret_domain} के कई रूपों की कोशिश की, दोनों नियंत्रक परीक्षण और सुविधा परीक्षण के रूप में। बहुत बढ़िया, क्योंकि कई अन्य लोगों ने उन दृष्टिकोणों के साथ सफलता की सूचना दी।

मेरे लिए समाधान था:

request.headers["SERVER_NAME"] = my_secret_domain 
post path, args 

मैं गहरे लाल रंग का 2.1.5p273 चल रहा हूँ, rspec 3.1.7 और रेल 4.2.0