2012-03-22 36 views
7

जब मैं हेरोकू बांस चला रहा था, यह कभी भी कोई समस्या नहीं थी। अब, सीडर पर, जब भी मैं सर्वर पर एक रेक कार्य के भीतर से अपने मॉडल तक पहुंचने का प्रयास करता हूं तो मुझे त्रुटियां मिलती हैं। यह rake db:seed, एक मानक रेक कार्य के साथ-साथ मेरे स्वयं के कस्टम निर्मित कार्यों के साथ होता है जो स्पष्ट रूप से शामिल हैं: पर्यावरण। मैं भी तो प्रचुरता से कार्य करें:उत्पादन रेक कार्य मेरे मॉडल को पहचानें

namespace :db do 
    desc "Update db" 
    task :new_seed => :environment do 
    require './Scraped_Data/Games/code/column-headers.rb' 
    require 'csv' 
    require 'net/http' 
    require './config/environment.rb' 

    # code here... 

    end 
end 

मैं इस मुद्दे का कोई उल्लेख कहीं और नहीं मिल सकता है, और इन कार्यों के सभी विकास में पूरी तरह से चलाते हैं।

rake aborted! 
uninitialized constant Object::Movie 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/ext/module.rb:36:in `const_missing' 
/app/lib/tasks/new_seed.rake:187:in `block in load_scraped_data' 
/app/vendor/bundle/ruby/1.9.1/gems/rest-open-uri-1.0.0/lib/rest-open-uri.rb:37:in `open' 
/app/vendor/bundle/ruby/1.9.1/gems/rest-open-uri-1.0.0/lib/rest-open-uri.rb:37:in `open' 
/app/lib/tasks/new_seed.rake:148:in `load_scraped_data' 
/app/lib/tasks/new_seed.rake:550:in `block (2 levels) in <top (required)>' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain' 
/usr/local/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run' 
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>' 
/app/vendor/bundle/ruby/1.9.1/bin/rake:19:in `load' 
/app/vendor/bundle/ruby/1.9.1/bin/rake:19:in `<main>' 
Tasks: TOP => db:new_seed 
+1

मुझे संदेह है कि यह एक अलग कारण के लिए असफल रहा है .. विशेष रूप से यदि आप "heroku रन कंसोल" चलाते हैं तो क्या आप वहां "मूवी" लोड कर सकते हैं? –

+0

हाँ, मैं कर सकता हूँ। मुझे कंसोल से अपने सभी मॉडलों तक पहुंचने में कोई समस्या नहीं है। मैंने अभी पुनः जांच की है और मूवी 'होकोकू रन कंसोल' से ठीक काम करती है। –

+2

मेरे पास थ्रेडसेफ था! = सत्य 'मेरे उत्पादन वातावरण में कॉन्फ़िगर किया गया। इससे इस मुद्दे का कारण बन गया। –

उत्तर

20

डिफ़ॉल्ट रूप से देता है सेट threadsafe dependency_loading = false
आप के लिए अपने आवेदन में threadsafe और पहुँच सक्षम करना चाहते हैं अपने आपके काम में मॉडल, आपको इसे लोड करने की आवश्यकता होगी।

# Enable threaded mode 
config.threadsafe! 
config.dependency_loading = true if $rails_rake_task 


रेफरी .: http://nowhereman.github.com/how-to/rails_thread_safe/

आशा इस मदद!

+0

'$ rails_rake_task' को रेक या रेल के हाल के संस्करणों में परिभाषित नहीं किया गया है, लेकिन आप अभी भी अपने रेकैक में '$ rails_rake_task = true' सेट कर सकते हैं। –

1

मैं threadsafe! = true पर config/environments/production.rb

अक्षम मेरी उत्पादन वातावरण में कॉन्फ़िगर किया था: किसी भी अंतर्दृष्टि के लिए धन्यवाद, और यहाँ पूर्ण त्रुटि संदेश रेक कार्य जैसे ही थूक से बाहर के रूप में वे Heroku पर मेरा एक मॉडल का सामना है यह समस्या हल करता है।

जवाब मिला: rake aborted! uninitialized constant Object::Country, why can't see model? कुछ और स्पष्टीकरण और अन्य वैकल्पिक हल के लिए विकल्पों (विशेष रूप से पिछले लिंक)