/ / गैर-रेल एप्लिकेशन में डाटाबेसक्लाइनर त्रुटियां - रूबी, सीक्वल

गैर रेल ऐप में डेटाबेस क्लीनर त्रुटियां - रूबी, सीक्वेल

मैं एक गैर-रेल एप्लिकेशन पर चल रहा है, जहां मैं सीक्वल का उपयोग कर रहा हूं, लेकिन मुझे सभी प्रकार के मुद्दे हैं, यह डीबी इस्न की तरह दिखता है, जो सही तरीके से सेटअप नहीं हो रहा है।

RSpec.configure do |config|
config.before(:suite) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with(:truncation)
p DatabaseCleaner.connections
end

config.before(:each) do
DatabaseCleaner.start
end

config.after(:each) do
DatabaseCleaner.clean
end
end

रनस्पेक रिटर्न -

ruby-1.9.2-p290/gems/database_cleaner-0.8.0/lib/database_cleaner/sequel/truncation.rb:12:in `clean": undefined method `url" for :default:Symbol (NoMethodError)
from /Users/tim/.rvm/gems/ruby-1.9.2-p290/gems/database_cleaner-0.8.0/lib/database_cleaner/base.rb:39:in `clean_with"
from /Users/tim/.rvm/gems/ruby-1.9.2-p290/gems/database_cleaner-0.8.0/lib/database_cleaner/configuration.rb:62:in `block in clean_with"
from /Users/tim/.rvm/gems/ruby-1.9.2-p290/gems/database_cleaner-0.8.0/lib/database_cleaner/configuration.rb:62:in `each"
from /Users/tim/.rvm/gems/ruby-1.9.2-p290/gems/database_cleaner-0.8.0/lib/database_cleaner/configuration.rb:62:in `clean_with"

यह रेखा विफल हो रही है -

case db_type= db.url.sub(/:.+/,"").to_sym

यदि मैं "DatabaseCleaner.clean_with (: truncation)" को हटाता हूं, तो मुझे निम्नलिखित मिलते हैं, ध्यान दें कि DB सेट है: डिफ़ॉल्ट और नहीं: परीक्षण

[#<DatabaseCleaner::Base:0x007fdbe41825f0 @autodetected=true, @orm=:sequel, @strategy=#<DatabaseCleaner::Sequel::Transaction:0x007fdbe416b328 @db=:default>>]

An error occurred in an after hook
NoMethodError: undefined method `resume" for nil:NilClass occurred at /Users/tim/.rvm/gems/ruby-1.9.2-p290/gems/database_cleaner-0.8.0/lib/database_cleaner/sequel/transaction.rb:22:in `clean"

दोनों त्रुटियों से संकेत मिलता है कि DB ने "सेट नहीं किया है, लेकिन मैं देख सकता हूं" क्यों। कोई विचार?

उत्तर:

जवाब के लिए 3 № 1

यह database_cleaner (देखें) में तय किया गया है https://github.com/bmabey/database_cleaner/commit/adb0d438dbfabaea2588f3058b1e75914706e53d), लेकिन यह ठीक नहीं है, जैसे कि एक नई रिलीज़ है जिसमें फिक्स शामिल है। आपको "git संस्करण का उपयोग करना होगा जब तक कि कोई नया रिलीज़ नहीं होता।


उत्तर № 2 के लिए 1

मुझे भी यही समस्या थी। मैंने बस बदल दिया database_cleaner अगले संस्करण के बाहर होने तक मेरे जेमफाइल में।

group :test do
# The release version does not support sequel properly. See
# https://github.com/bmabey/database_cleaner/commit/e5cb8cea.
# FIXME: Update this, when DatabaseCleaner 0.8.1 is released!
gem "database_cleaner", :git => "git://github.com/bmabey/database_cleaner.git",
:ref => "e5cb8cea"
end

जवाब के लिए 0 № 3

मैं DatabaseCleaner के साथ [एक कनेक्शन] को स्पष्ट रूप से परिभाषित नहीं कर रहा हूं, मैं यह करने के लिए डॉक्स में कहीं भी नहीं देख सकता हूं।

आप इस तरह से DatabaseCleaner के लिए एक मौजूदा कनेक्शन पास कर सकते हैं:

connection = Sequel.connect("mysql2://user:password@host:port/database_name")
DatabaseCleaner[:sequel, { :connection => connection) }]