2012-07-31 7 views
22

मेरे पास एक रेल 3 ऐप है जो मोंगोइड 3 के साथ सफलतापूर्वक तैनात है हेरोोकू (मोंगोएचक्यू का उपयोग करके) - लेकिन फिर कुछ हुआ (यह तय नहीं कर सकता कि यह वास्तव में क्या था) और निर्माण ने हेरोोकू पर दुर्घटनाग्रस्त होना शुरू कर दिया।हेरोकू और मोंगोएचक्यू: एक्शन व्यू :: टेम्पलेट :: त्रुटि (ऑपरेशन: # <मोपेड :: प्रोटोकॉल :: कमांड :: त्रुटि के साथ प्रमाणीकरण विफल "ऑथ विफल रहता है")

तो इस त्रुटि मैं मिलता है:

TLDR:Moped::Errors::AuthenticationFailure (The operation: #<Moped::Protocol::Commands::Authenticate ... failed with error "auth fails")

क्या यह अधिक डिबग करने के लिए कठिन बना देता है कि यह स्थानीय होस्ट पर ठीक काम कर रहा है है। अब मैं विचारों से बाहर हूं कि यह क्या हो सकता है।

app[web.1]: >> Thin web server (v1.4.1 codename Chromeo) 
app[web.1]: >> Maximum connections set to 1024 
app[web.1]: >> Listening on 0.0.0.0:58731, CTRL+C to stop 
heroku[web.1]: State changed from starting to up 
app[web.1]: 
app[web.1]: 
app[web.1]: Started GET "/" for 212.86.9.90 at 2012-07-31 08:08:07 +0000 
heroku[router]: GET cool-name-123.herokuapp.com/ dyno=web.1 queue=0 wait=0ms service=171ms status=200 bytes=1286 
heroku[router]: GET cool-name-123.herokuapp.com/assets/application-8e7bfeeffc9291864e5b42d908c2fdda.css dyno=web.1 queue=0 wait=0ms service=11ms status=200 bytes=92524 
heroku[router]: GET cool-name-123.herokuapp.com/assets/application-aa557bde70f1236cdf90c913043c4382.js dyno=web.1 queue=0 wait=0ms service=16ms status=200 bytes=122836 
heroku[router]: GET cool-name-123.herokuapp.com/favicon.ico dyno=web.1 queue=0 wait=0ms service=3ms status=200 bytes=0 
app[web.1]: 
app[web.1]: 
app[web.1]: Started GET "/originals/new" for 212.86.9.90 at 2012-07-31 08:08:11 +0000 
heroku[router]: GET cool-name-123.herokuapp.com/originals/new dyno=web.1 queue=0 wait=0ms service=31ms status=200 bytes=1808 
app[web.1]: 
app[web.1]: 
app[web.1]: Started POST "/originals" for 212.86.9.90 at 2012-07-31 08:08:34 +0000 
app[web.1]: 
app[web.1]: Moped::Errors::AuthenticationFailure (The operation: #<Moped::Protocol::Commands::Authenticate 
app[web.1]: @length=154 
app[web.1]: @request_id=3 
app[web.1]: @response_to=0 
app[web.1]: @op_code=2004 
app[web.1]: @flags=[] 
app[web.1]: @full_collection_name="app123.$cmd" 
app[web.1]: @limit=-1 
app[web.1]: @skip=0 
app[web.1]: @selector={:authenticate=>1, :user=>"heroku", :nonce=>"xyz", :key=>"xyz"} 
heroku[router]: POST cool-name-123.herokuapp.com/originals dyno=web.1 queue=0 wait=0ms service=1486ms status=500 bytes=643 
app[web.1]: @fields=nil> 
app[web.1]: failed with error "auth fails"): 
app[web.1]: app/controllers/originals_controller.rb:19:in `block in create' 
app[web.1]: app/controllers/originals_controller.rb:18:in `create' 
app[web.1]: 
app[web.1]: 
heroku[router]: GET cool-name-123.herokuapp.com/favicon.ico dyno=web.1 queue=0 wait=0ms service=3ms status=304 bytes=0 
app[web.1]: 
app[web.1]: 
app[web.1]: Started GET "/" for 212.86.9.90 at 2012-07-31 08:09:40 +0000 
heroku[router]: GET cool-name-123.herokuapp.com/ dyno=web.1 queue=0 wait=0ms service=11ms status=304 bytes=0 

मैं हाल ही में Heroku के साथ संघर्ष किया है, और एक परिणाम के रूप मुझे लगता है मैं db ड्राइवरों की पसंद & सेवा के लिए सही सेटिंग्स (नई YML योजना + Gemfile में रूबी 1.9.3 का प्रयोग करके) होना चाहिए ।

जब मैं heroku config --app app_name चलाने मैं

DATABASE_URL  => postgres://rhalppyjrb:[email protected]/rhalppyjrb 
GEM_PATH   => vendor/bundle/ruby/1.9.1 
LANG    => en_US.UTF-8 
MONGOHQ_URL   => mongodb://heroku:[email protected]:27054/app123 
PATH    => bin:vendor/bundle/ruby/1.9.1/bin:/usr/local/bin:/usr/bin:/bin 
RACK_ENV   => production 
RAILS_ENV   => production 
SHARED_DATABASE_URL => postgres://rhalppyjrb:[email protected]/rhalppyjrb 

मेरे mongoid.yml इस तरह दिखता है:

production: 
    sessions: 
    default: 
      uri: <%= ENV['MONGOHQ_URL'] %> 
      options: 
      consistency: :strong 
      skip_version_check: true 
      safe: true 

Gemfile इस तरह है:

source 'https://rubygems.org' 

gem 'bundler', '1.2.0.rc' 

ruby '1.9.3' 

gem 'rails', '3.2.6' 
gem 'thin' 
gem 'rmagick', :require => 'RMagick' 
gem "carrierwave-mongoid", :git => "git://github.com/jnicklas/carrierwave-mongoid.git", :branch => "mongoid-3.0", :require => 'carrierwave/mongoid' 

group :assets do 
    gem 'sass-rails', '~> 3.2.3' 
    gem 'coffee-rails', '~> 3.2.1' 
    gem 'uglifier', '>= 1.0.3' 
    gem "therubyracer", :platform => :ruby 
end 

gem 'jquery-rails' 
gem "haml", ">= 3.1.6" 
gem "mongoid", ">= 3.0.3" 
gem "devise", ">= 2.1.2" 
gem "devise_invitable", ">= 1.0.2" 
gem "cancan", ">= 1.6.8" 
gem "rolify", ">= 3.1.0" 
gem "bootstrap-sass", ">= 2.0.4.0" 
gem "simple_form" 

group :development do 
    gem "guard", ">= 0.6.2" 
    gem 'rb-fsevent' 
    gem 'growl' 
    gem "haml-rails", ">= 0.3.4" 
    gem "guard-bundler", ">= 0.1.3" 
    gem "guard-rails", ">= 0.0.3" 
    gem "guard-livereload", ">= 0.3.0" 
    gem "guard-rspec", ">= 0.4.3" 
end 

group :test do 
    gem "database_cleaner", ">= 0.8.0" 
    gem "mongoid-rspec", "1.4.6" 
    gem "email_spec", ">= 1.2.1" 
end 

group :development, :test do 
    gem "factory_girl_rails", ">= 3.5.0" 
    gem "rspec-rails", ">= 2.11.0" 
end 
+0

आप MongoHQ_URL साथ सफल कनेक्शन मोंगो ग्राहक के साथ उपयोग है? – shingara

+0

बस एक ही समस्या थी। सब ठीक था, मैं डीबी भाग गया: कुछ परीक्षण करने के लिए डेटाबेस खाली करने के लिए शोध किया, अब यह त्रुटि हो रही है। क्या गलत है पता नहीं लगा सकता है। सबकुछ लोकहोस्ट पर ठीक काम करता है, और उत्पादन में मेरा मोंगो कनेक्शन पांच मिनट पहले ठीक था। – odigity

+0

क्या आपने इसे समझ लिया? – Nerian

उत्तर

20

मुद्दा अपने प्रमाणीकरण कि है प्रमाण पत्र अब सही नहीं हैं। विशेष रूप से, जिस उपयोगकर्ता को आप प्रमाणित करने का प्रयास कर रहे हैं, अब मौजूद नहीं है।

कारण यह है कि जब आप rake db:reseed करते हैं तो सभी डेटा हटा दिए जाते हैं, जिसमें डीबी स्तर के उपयोगकर्ता शामिल होते हैं।

उदाहरण:

➜ skadi git:(master) ✗ mongo   
    MongoDB shell version: 2.0.7 
    connecting to: test 
    > use skadi_development 
    switched to db skadi_development 
    > db.system.users.find() 
    > db.addUser("joe", "passwordForJoe") 
    { "n" : 0, "connectionId" : 191, "err" : null, "ok" : 1 } 
    { 
    "user" : "joe", 
    "readOnly" : false, 
    "pwd" : "dac588613249fe92703afb262ec53b82", 
    "_id" : ObjectId("5030d5181cefbd2b04a99e30") 
    } 
    > db.system.users.find() 
    { "_id" : ObjectId("5030d5181cefbd2b04a99e30"), "user" : "joe", "readOnly" : false, "pwd" : "dac588613249fe92703afb262ec53b82" } 
    > exit 
    bye 

    ➜ skadi git:(master) ✗ rake db:reseed 

    ➜ skadi git:(master) ✗ mongo   
    MongoDB shell version: 2.0.7 
    connecting to: test 
    > use skadi_development 
    switched to db skadi_development 
    > db.system.users.find() 
    => Nothing 

तो तुम जब आप डेटाबेस से कनेक्ट करने का प्रयास करें, आपके क्रेडेंशियल्स अब वैध नहीं हैं।

आप उस में MongoHQ व्यवस्थापक पैनल की जांच कर सकते हैं। आप इसे Heroku पर जाकर, अपने ऐप का चयन करके, संसाधनों पर क्लिक करके और MongoHQ पर क्लिक करके पा सकते हैं। फिर डेटाबेस उपयोगकर्ता टैब पर क्लिक करें।

rake db:reseed आपके द्वारा अपेक्षित काम करने के लिए उपयोग किया जाता था, लेकिन यह मोन्गॉयड के नए संस्करण के साथ बदल गया। सिस्टम को छोड़कर, सभी संग्रहों को हटाने के लिए। *, आप rake db:purge का उपयोग कर सकते हैं।

आपको मास्टर शाखा का उपयोग करने की आवश्यकता हो सकती है क्योंकि उस रेक कार्य अभी तक स्थिर संस्करण में उपलब्ध नहीं है। या बस अपने कोड में Mongoid.purge! का उपयोग करें, जो स्थिर में काम करता है।

विवरण: https://github.com/mongoid/mongoid/issues/2275

+0

यह काम किया; अपेक्षित उपयोगकर्ता को फिर से जोड़ना पड़ा। –

+0

मेरे लिए भी काम करता है। धन्यवाद! – okysabeni

+0

बिल्कुल सही, आकर्षण की तरह काम किया!धन्यवाद – RSB

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