की सफाई नहीं कर रहा है मुझे ककड़ी & डेटाबेस लेनदेन के साथ कुछ समस्याएं हैं - विशेष रूप से, जब मैं परीक्षण सूट चलाता हूं, डेटाबेस लेनदेन बाद में साफ नहीं किया जाता है।रेल: ककड़ी डीबी
मैं स्पार्क, पोस्टग्रेस के साथ रेल 3.1 चला रहा हूं।
प्रारंभ में सुविधाओं/support/env.rb database_cleaner उपयोग करने के लिए स्थापित किया गया था, लेकिन लगातार डाटाबेस की प्रत्येक कॉल पर निम्न त्रुटि मिला:
के बादमैंने नियमित लेनदेन पर वापस जाने की कोशिश की, लेकिन कोई खुशी नहीं। मैं कंसोल (ककड़ी पर्यावरण) के माध्यम से डेटाबेस तक पहुंच सकता हूं और बिना किसी समस्या के रिकॉर्ड/हटा/पुनर्प्राप्त कर सकता हूं। Config/database.yml, विशेषताएं/समर्थन/env.rb, config/वातावरण/cucumber.rb और rspec/spec_helper.rb फ़ाइलें नीचे दी गई हैं। कोई सुझाव बहुत सराहना की - यह भी मुझे कुछ समय के लिए स्टम्प्ड था की है:कोई डेटाबेस निर्दिष्ट। गुम तर्क: डेटाबेस। (ArgumentError) /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/postgresql_adapter.rb:22:in
postgresql_connection' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:292:in
new_connection ' /उपयोगकर्ता/जॉन /। आरवीएम/रत्न/रूबी-1.9.2-पी 2 9 0/रत्न/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb: 302: चेकआउट मेंcheckout_new_connection' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:254:in
ब्लॉक (2 स्तर) में ' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rbs50:inloop' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:250:in
चेकआउट में ब्लॉक' /Users/john/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/monitor.rbs01:inmon_synchronize' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:249:in
चेकआउट ' /Users/john/.rvm/gems/ruby- 1.9.2-पी 2 9 0/रत्न/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb: 151: 012 मेंretrieve_connection ' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_specification.rb:107:inretrieve_connection' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/cucumber-rails-1.0.2/lib/cucumber/rails/hooks/active_record.rb:7:in
कनेक्शन' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/database_cleaner-0.6.7/lib/database_cleaner/active_record/transaction.rb:17:inclean' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/database_cleaner-0.6.7/lib/database_cleaner/base.rb:77:in
साफ़ ' /उपयोगकर्ता/जॉन /। आरवीएम/रत्न/रूबी-1.9.2-पी 2 9 0/रत्न/डेटाबेस_क्लेनर-0.6.7/lib/डेटाबेस_cleaner/config.rb: 56:block in clean' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/database_cleaner-0.6.7/lib/database_cleaner/configuration.rb:56:in
में प्रत्येक ' /Users/john/.rvm/gems/ruby-1.9.2 -p290/रत्न/database_cleaner-0.6.7/lib/database_cleaner/configuration.rb: 56:clean' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/cucumber-rails-1.0.2/lib/cucumber/rails/hooks/database_cleaner.rb:9:in
में '
config/DATABASE.yml
default: &defaults
adapter: postgresql
username: rails_dev
password: foobar
development:
<<: *defaults
database: fcct_d
test: &test
<<: *defaults
database: fcct_t
production:
<<: *defaults
database: fcct_p
username: fcct
password: k#1*5Avb3dTa
cucumber:
adapter: postgresql
username: rails_dev
password: foobar
database: fcct_t
विशेषताएं/support/ENV.RB
require 'rubygems'
require 'spork'
Spork.prefork do
require 'cucumber/rails'
require 'database_cleaner'
require 'database_cleaner/cucumber'
Capybara.default_selector = :css
ActionController::Base.allow_rescue = false
begin
DatabaseCleaner.strategy = :transaction
rescue NameError
raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it."
end
end
Spork.each_run do
require 'factory_girl'
require File.join(File.dirname(__FILE__), '../../lib/existing_factory/existing_factory.rb')
end
config/वातावरण/खीरा आरबी
बिजनेसस्कूल कॉरपोरेट :: एप्लिकेशन.कॉन्फिगर करें # सेटिंग्स यहां निर्दिष्ट config/application.rb
# परीक्षण वातावरण अपने आवेदन की
टेस्ट स्वीट चलाने के लिए विशेष रूप से प्रयोग किया जाता है में उन लोगों से प्राथमिकता दी जाती। आपको अन्यथा इसके साथ काम करने की ज़रूरत नहीं है। याद रखें
कि # आपका परीक्षण डेटाबेस परीक्षण सूट के लिए "स्क्रैच स्पेस" है और मिटा दिया गया है और परीक्षण रनों के बीच पुनर्निर्मित किया गया है।डेटा पर भरोसा न करें!
config.cache_classes = सच
config.use_transactional_fixtures = सच# कॉन्फ़िगर प्रदर्शन config.serve_static_assets = सच
config.static_cache_control = "सार्वजनिक, अधिकतम उम्र के लिए कैश-नियंत्रण के साथ परीक्षण के लिए स्थिर संपत्ति, सर्वर = 3600 "# लॉग त्रुटि संदेश जब आप गलती नहीं के बराबर
config.whiny_nils पर तरीकों कॉल = सच# पूर्ण त्रुटि रिपोर्ट दिखाएँ और अक्षम कैशिंग
config.consider_all_requests_local = सच
config.action_controller.perform_caching = false# बजाय प्रतिपादन अपवाद टेम्पलेट्स
config.action_dispatch.show_exceptions के अपवाद उठाएँ = false परीक्षण परिवेश में# अक्षम अनुरोध जालसाजी संरक्षण
config.action_controller.allow_forgery_protection = false# कार्य मेलर को असली दुनिया को ईमेल वितरित न करें। # : परीक्षण वितरण विधि # एक्शनमेलर :: Base.deliveries सरणी में भेजे गए ईमेल जमा करती है।
config.action_mailer.delivery_method =: परीक्षण# उपयोग एसक्यूएल के बजाय सक्रिय रिकॉर्ड स्कीमा डम्पर जब परीक्षण डेटाबेस का निर्माण। एसक्यूएल
# प्रिंट प्रतिवाद नोटिस: # यदि आपका स्कीमा पूरी तरह से स्कीमा डम्पर से फेंक दिया, #, जैसा कि आप की कमी या डेटाबेस विशेष स्तंभ प्रकार # config.active_record.schema_format = नहीं हो सकता है के लिए आवश्यक है stderr को
config.active_support.deprecation =: stderr अंत
कल्पना/SPEC_HELPER.RB
की आवश्यकता होती है 'rubygems' 'spork'की आवश्यकता होती है
Spork.prefork do # इस ब्लॉक में और अधिक लोड होने से आपके परीक्षण तेजी से चलाने के लिए होंगे। हालांकि, # अगर आप यहां लोड की गई पुस्तकालयों से कोई कॉन्फ़िगरेशन या कोड बदलते हैं, तो आपको #प्रभाव के लिए स्पार्क को पुनरारंभ करने की आवश्यकता होगी। # यह फ़ाइल spec/के लिए प्रतिलिपि बनाई गई है जब आप 'रेल उत्पन्न करते हैं rspec उत्पन्न करें:' ENV ["RAILS_ENV"] || = 'test' को फ़ाइल.expand_path ("../../ config/environment", फ़ाइल) की आवश्यकता होती है 'rspec/रेलों'
# आवश्यकता है कस्टम matchers और मैक्रो आदि, कल्पना/समर्थन में #/और उसकी उप-साथ गहरे लाल रंग का फ़ाइलों का समर्थन।
डिर [Rails.root.join ("spec/support/* /। आरबी")] प्रत्येक {| एफ | एफ}आरएसपीसी की आवश्यकता है।कॉन्फ़िगर करें | config | # == नकली फ्रेमवर्क # # आप मोचा, flexmock या आर आर का उपयोग करना पसंद करते हैं, तो उपयुक्त लाइन uncomment: # # config.mock_with: मोचा # config.mock_with: flexmock # config.mock_with: rr config.mock_with: rspec
# Remove this line if you're not using ActiveRecord or
ActiveRecord जुड़नार # config.fixture_path = "# {:: Rails.root}/कल्पना/जुड़नार"
# If you're not using ActiveRecord, or you'd prefer not to run
आपके प्रत्येक # लेनदेन के भीतर उदाहरणों में से प्रत्येक, निम्नलिखित पंक्ति को हटाएं या सत्य के बजाय झूठी # असाइन करें। config.use_transactional_fixtures = सच अंत
अंत
Spork.each_run कर # यह कोड हर बार जब आप अपने चश्मा चलाने चलाया जाएगा।
अंत
हाय सेबेस्टियन - प्रतिक्रिया के लिए धन्यवाद। लेनदेन संबंधी फिक्स्चर को सत्य के रूप में सेट किया गया था, यह देखने के लिए कि क्या मैं त्रुटि का निदान कर सकता हूं (ऊपर सही किया गया है)। दुर्भाग्य से, एक ही समस्या है। किसी भी तरह धन्यवाद – PlankTon