1

Railsコンソールを次のように起動すると:

$ RAILS_ENV=development rails console

すべてがうまくいっているようです。Mongoid は mongodb に接続してレコードを取得できます。

ただし、次の場合:

$ RAILS_ENV=test rails console 
$ RAILS_ENV=production rails console

次のようにエラーが発生します。

Rack::File headers parameter replaces cache_control after Rack 1.5.
/usr/local/lib/ruby/gems/1.9.1/gems/mongoid-3.0.16/lib/mongoid/criteria.rb:585:in `check_for_missing_documents!':  (Mongoid::Errors::DocumentNotFound)
Problem:
  Document(s) not found for class Actor with id(s) 50e5259f53c205d815000001.
Summary:
  When calling Actor.find with an id or array of ids, each parameter must match a document in the database or this error will be raised. The search was for the id(s): 50e5259f53c205d815000001 ... (1 total) and the following ids were not found: 50e5259f53c205d815000001.
Resolution:
  Search for an id that is in the database or set the Mongoid.raise_not_found_error configuration option to false, which will cause a nil to be returned instead of raising this error when searching for a single id, or only the matched documents when searching for multiples.

私の config/mongoid.yml には、3 つの環境すべてでまったく同じ行セットがあります。テストと本番で接続できない理由がわかりません。

更新: Mongoid.yml

development:
  sessions:
    default:
      database: tgmd
      hosts:
        - localhost:27017
test:
  sessions:
    default:
      database: tgmd
      hosts:
        - localhost:27017
production:
  sessions:
    default:
      uri: <%= ENV['MONGO_URL'] %>

次のものを配置して、問題を一時的に解決しました。

options:
    raise_not_found_error: false

運用中: また、jobs/ フォルダーからいくつかのスクリプトを移動しました。それはうまくいきました。誰でもこれについて教えてもらえますか?

4

1 に答える 1

0

ENV['MONGO_URL'] に正しくないものが含まれていると思います。本番環境で開発データベースを使用してみてください。

production:
  sessions:
    default:
      database: tgmd
      hosts:
        - localhost:27017

それが機能する場合。ENV['MONGO_URL'] を確認してください

于 2013-01-08T11:20:16.000 に答える