14

スタンドアロンの Ruby アプリケーションで遊んでいますが、Mongoid 3.0.13 が動作するように構成できません。

次のような構成ブロックを持ついくつかのサンプルアプリに出くわしました。

Mongoid::Config.instance.from_hash({"database" => "oid"}) 

または

Mongoid.configure do |config|
 name = "mongoid_test_db"
 host = "localhost"
 port = 27017
 config.database = Mongo::Connection.new.db(name)
end

これらの結果は次のとおりです。

undefined method `database=' for Mongoid::Config:Module (NoMethodError)

最近、構成設定が変更されたようです。

私も試しました:

Mongoid::Config.connect_to("sweet")

しかし、それは何もしないようです。

4

4 に答える 4

13

「スタンドアロン」とは、レールではないことを意味していると思います。実際、Mongoid は、実行方法に関係なく、これを機能させる簡単な方法を提供します。

  1. 通常どおり、データベース接続情報を含むファイルを定義しmongoid.ymlます。
development:
  clients:
    default:
      database: mongoid
      hosts:
        - localhost:27017
  1. アプリケーションで Mongoid が必要であることを確認してください。
  2. を呼び出しMongoid.load!て、Mongoid に構成ファイルを解析させ、自身を初期化させます。
require 'mongoid'
Mongoid.load!('/path/to/your/mongoid.yml')

この情報は、「Sinatra、Padrino、およびその他」セクションの下にもあります: http://mongoid.org/en/mongoid/docs/installation.html

Web アプリケーション以外にも同じアプローチが適用できます。それが役立つことを願っています。

于 2013-03-07T23:58:09.900 に答える
4

これを試して:

prompt> ruby myapp.rb 
hello world

prompt> cat mongoid.yml 
development:
  sessions:
    default:
      database: myapp
      hosts:
        - localhost:27017

prompt> cat myapp.rb 
require 'mongoid'
Mongoid.load!("mongoid.yml", :development)
puts "hello world"
于 2014-08-01T02:24:13.280 に答える
0

Mongoid.load を使用する前の回答は正しいです。mongoid 設定ファイルからロードする場合。Mongoid 構成を別の構成ファイルに埋め込む必要がある場合に遭遇しました。したがって、ハッシュから構成をロードする方法が必要でした。

>3.1 では、Mongoid.load_configuration(hash) を呼び出すことができます。

残念ながら、この関数は 3.0 ではプライベートです。したがって、Mongoid をロードする前に public エイリアス メソッドを設定すると、次のようになります。

module Mongoid
  module Config
    def load_configuration_hash(settings)
      load_configuration(settings)
    end
  end
end

このコードが require 'mongoid' の前に呼び出されることを確認してください。これで、Mongoid.load_configuration_hash(hash) を呼び出すことができます。

于 2014-01-27T20:43:40.003 に答える