2012-07-12 18 views
18

से कनेक्ट नहीं हो सकता है मुझे हेडलेस मणि, एक्सवीएफबी और हमारे सीआई सर्वर के साथ कैपिबरा-वेबकिट चलाने में कुछ समस्याएं आई हैं। हम स्वत: एकीकरण परीक्षण और रेल 3.2 एप पर हमारे रूबी के जावास्क्रिप्ट परीक्षण के लिए इस सेटअप का उपयोग करते हैं। परीक्षण के दौरान यह शिकायत है किहेडलेस मणि: webkit_server: एक्स सर्वर

webkit_server: cannot connect to X server 

लेकिन जब मैं ps aux | grep Xvfb

deploy 1602 0.0 0.1 61696 1912 pts/2 S+ Jul10 0:00 /usr/bin/Xvfb :99 -screen 0 1280x1024x24 -ac 

मैं Xvfb चल देखते हैं। यदि मैं --trace के साथ परीक्षण चलाता हूं तो यह केवल उपरोक्त त्रुटि लॉग दिखाता है और मैं त्रुटि को डीबग नहीं कर सकता।

कोई विचार है कि मैं कुछ और जानकारी कैसे प्राप्त कर सकता हूं, या यहां तक ​​कि एक समाधान भी?

उत्तर

14

मैं कैपिबरा-वेबकिट मणि कैपिबरा के साथ काम करने की कोशिश कर रहा था और मेरे परीक्षणों के लिए सीआई नौकरी में xvfb-run का उपयोग कर समाप्त हुआ।

xvfb-run bundle exec cucumber ... 

आपकी सीआई नौकरी निष्पादित करने का आदेश क्या है?

+0

मेरा सीआई xvfb के लिए कोई आदेश निष्पादित नहीं करता है। यह हेडलेस मणि (https://github.com/leonid-shevtsov/headless) के अंदर संभाला जाता है। अब मैं उस पर एक नजदीकी नजर रखता था, और मैं समझ सकता था कि हेडलेस Xvfb सर्वर को इस कमांड 'सिस्टम "# {CliUtil.path_to (" Xvfb ")} के साथ शुरू करता है: # {display} -स्क्रीन 0 # {आयाम} -एसी>/dev/null 2> & 1 और "', जहां 'CliUtil.path_to ("Xvfb") '' # {app} '.strip' को संदर्भित करता है। मेरे मामले में सर्वर '/ usr/bin/Xvfb' देता है। ठीक है, मैं अस्थायी रूप से इस विधि को ओवरराइड करने का प्रयास करता हूं, ताकि यह बदले में 'xvfb-run' लौटा सके। हो सकता है कि – 23tux

+0

मेरी कोशिश की है, लेकिन इससे मदद नहीं मिली है। कोई अन्य विचार? – 23tux

+0

यहां एक ही समस्या है। इस पर चार घंटे से अधिक समय तक रहा। ऐसा लगता है कि इस मुद्दे के साथ ग्रह पर दो लोग हैं। – kikuchiyo

5

हम एक ही मुद्दे में भाग गए ... बाहर निकलते हैं कि हमारे spec_helper.rb में हम हेडलेस स्टार्ट कमांड (नीचे) गायब थे।

require File.expand_path("../../config/environment", __FILE__) 
require 'rspec/rails' 
require 'rspec/autorun' 
require 'capybara/rspec' 
require 'capybara/webkit' 
require 'headless' 

Capybara.register_driver :webkit do |app| 
    Capybara::Driver::Webkit.new(app, :ignore_ssl_errors => true) 
end 

Capybara.javascript_driver = :webkit 

# don't run on the local machine (since we don't have xvfb running locally) 
if Rails.env.production? 
    headless = Headless.new 
    headless.start 
end 
+3

आप spec कॉन्फ़िगरेशन फ़ाइल में उत्पादन वातावरण की जांच क्यों करते हैं? जब उत्पादन env में इस फ़ाइल को लोड नहीं किया जाना चाहिए? –

3

आप ट्रैविस सीआई का उपयोग कर रहे हैं, तो आप इस विन्यास सेटिंग से कुछ लाभ मिल सकता है:

यहाँ हमारे rspec config है

before_install: 
- "echo 'gem: --no-document' > ~/.gemrc" 
- "echo '--colour' > ~/.rspec" 
- export DISPLAY=:99.0 
- sh -e /etc/init.d/xvfb start 
+0

पहले दो 'इको' कथन असंबद्ध हैं और दूसरों के लिए भ्रमित हो सकते हैं। –

1

स्थापित xvfb

sudo apt-get install xvfb 

फिर xvfb

का उपयोग करके अपना आदेश निष्पादित करें
xvfb-run rspec 
संबंधित मुद्दे