2010-02-05 16 views
6

मैं मानक db/seeds.rb विधि के साथ अपने डेटाबेस को बीज करने की कोशिश कर रहा हूं। यह मेरा विकास मशीन पर ठीक काम करता है, लेकिन मेरे सर्वर पर, मैं मिलता है:डीबी: बीज लोड नहीं कर रहे हैं

$ sudo rake db:seed RAILS_ENV=production --trace 
** Invoke db:seed (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Execute db:seed 
rake aborted! 
uninitialized constant Permission 
/usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2503:in `const_missing' 
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:92:in `const_missing' 
/path/.../.../.../.../db/seeds.rb:4 
/usr/local/lib/ruby/gems/1.8/gems/rails-2.3.4/lib/tasks/databases.rake:215:in `load' 
/usr/local/lib/ruby/gems/1.8/gems/rails-2.3.4/lib/tasks/databases.rake:215 
/usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `call' 
... 

लेकिन जब मैं कंसोल में जांच, मॉडल मौजूद है:

$ script/console production 
Loading production environment (Rails 2.3.4) 
>> Permission 
=> Permission(id: integer, ..., created_at: datetime, updated_at: datetime) 

मैं क्या भूल रहा हूँ?

+0

ध्यान दें कि यह मेरे उत्पादन सर्वर पर विकास के वातावरण में ठीक काम करता है। – Eli

+0

आपके बीज.आरबी कैसा दिखता है? –

+0

मैंने इसे ठीक किया। मैंने 'थ्रेडसेफ' अक्षम कर दिया! – Eli

उत्तर

6

इसे पर्यावरण कॉन्फ़िगरेशन में threadsafe! अक्षम करके ठीक किया जा सकता है।

2

मैं इस समस्या के लिए एक अच्छा दृष्टिकोण in this article पर चला गया। मैं यहां सारांशित करूँगा ताकि लोग इसे उम्मीद कर सकें (उम्मीद है)।

विचार उत्पादन वातावरण में threadsafe बंद करने के लिए, पहली संपादन config/वातावरण/production.rb कर रहा है:

config.threadsafe! unless ENV['THREADSAFE'] == 'off' 

फिर आप threadsafe = सेट जब रेक कार्य चल रहा है।

10

ब्लॉग पर एक टिप्पणी में ऊपर और यहाँ फिर से जुड़ा हुआ पोस्ट: http://www.builtfromsource.com/2011/02/09/getting-rake-dbseed-and-config-threadsafe-to-play-nice/

ब्रूस एडम्स कहा गया है कि एक कॉल कर सकते हैं:

config.threadsafe! जब तक $ rails_rake_task

केवल रेकसेक चलाने पर थ्रेडसेफ चालू करने के लिए।

लेकिन चूंकि मुद्दा वास्तव में है कि थ्रेडसेफ निर्भरता_लोडिंग बंद कर देता है, तो आप config.threadsafe के बाद बस यह लाइन जोड़ सकते हैं! इसे सक्षम करने के लिए, लेकिन फिर भी आप अपने पर्यावरण को लोड करते हैं।

config.dependency_loading = अगर सही है $ rails_rake_task

संबंधित मुद्दे