我正在使用以下版本的rails,ruby和mongoid创建一个测试应用程序.
rails 4 beta
ruby 2.0.0
mongoid 3.1.2
Run Code Online (Sandbox Code Playgroud)
我GemFile看起来像这样
gem 'rails', '4.0.0.beta1'
ruby '2.0.0'
gem 'mongoid', '~> 3.1.2'
gem 'bson_ext'
Run Code Online (Sandbox Code Playgroud)
但是,当我bundle在控制台上运行时,我得到以下错误.
Bundler找不到gem"activemodel"的兼容版本:
Fetching gem metadata from https://rubygems.org/...........
Fetching gem metadata from https://rubygems.org/..
Resolving dependencies...
Bundler could not find compatible versions for gem "activemodel":
In Gemfile:
mongoid (~> 3.1.2) ruby depends on
activemodel (~> 3.2) ruby
rails (= 4.0.0.beta1) ruby depends on
activemodel (4.0.0.beta1)
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?请.....
我正在使用独立的ruby应用程序,无法配置Mongoid 3.0.13.
我遇到过几个配置模块的示例应用程序:
Mongoid::Config.instance.from_hash({"database" => "oid"})
Run Code Online (Sandbox Code Playgroud)
要么
Mongoid.configure do |config|
name = "mongoid_test_db"
host = "localhost"
port = 27017
config.database = Mongo::Connection.new.db(name)
end
Run Code Online (Sandbox Code Playgroud)
这导致:
undefined method `database=' for Mongoid::Config:Module (NoMethodError)
Run Code Online (Sandbox Code Playgroud)
最近配置设置似乎已更改.
我也尝试过:
Mongoid::Config.connect_to("sweet")
Run Code Online (Sandbox Code Playgroud)
但这似乎什么都不做.
我使用Mongoid和rails使用Mongoid.override_database("database_name")与多个数据库进行通信.如何以编程方式查找当前数据库?
关于会话的Mongoid文档:http://mongoid.org/en/moped/docs/driver.html 定义覆盖数据库的方法,但没有定义获取当前数据库的方法.
我有一个使用在Heroku上运行的Mongoid 3的rails应用程序.我刚刚更新它以使用Unicorn.当我尝试将其部署到Heroku时,我收到以下错误:
Running: rake assets:precompile
rake aborted!
undefined method `match' for nil:NilClass
/tmp/build_3nnbzpfmnjpns/vendor/bundle/ruby/1.9.1/gems/mongoid-3.0.21/lib/mongoid/sessions/mongo_uri.rb:49:in `initialize'
Run Code Online (Sandbox Code Playgroud)
完整的堆栈跟踪可以在http://pastebin.com/8YcJHEmS找到
但是如果我从我的Gemfile中删除Unicorn,资产编译就会成功.查看Mongoid代码,我可以看到当mongoid.yml文件被解析时发生错误,但我无法弄清楚为什么Unicorn会导致失败.我的mongoid.yml文件看起来像这样:
production:
sessions:
default:
uri: <%= ENV['MONGOHQ_URL'] %>
options:
skip_version_check: true
safe: true
Run Code Online (Sandbox Code Playgroud)
我的Gemfile:
source 'https://rubygems.org'
ruby '1.9.3'
gem 'rails', '3.2.11'
gem 'thin'
group :assets do
gem 'sass-rails', '~> 3.2'
gem 'coffee-rails', '~> 3.2'
gem 'uglifier', '>= 1.0.3'
gem "twitter-bootstrap-rails", '>=2.1.8'
gem "bootstrap_form"
end
gem "jquery-rails"
gem 'jquery-ui-rails', "3.0.1"
gem 'newrelic_rpm'
gem "httparty"
gem "resque"
gem "resque-loner"
gem "unicorn", "4.4.0"
gem "mongoid", "~> …Run Code Online (Sandbox Code Playgroud) 我已经创建了一个Rails可安装应用程序并添加了'mongoid'和'rspec'gem.如果我现在尝试运行我的规格,我会收到以下错误:
Mongoid::Errors::NoSessionConfig:
Problem:
No configuration could be found for a session named 'default'.
Summary:
When attempting to create the new session, Mongoid could not find a session configuration for the name: 'default'. This is necessary in order to know the host, port, and options needed to connect.
Resolution:
Double check your mongoid.yml to make sure under the sessions key that a configuration exists for 'default'. If you have set the configuration programatically, ensure that 'default' exists in the configuration hash. …Run Code Online (Sandbox Code Playgroud) Ubuntu它被绞死后我不得不强行关闭我的系统.现在我在尝试运行我的Rails应用程序时遇到此错误.
Moped::Errors::ConnectionFailure (Could not connect to any secondary or primary nodes for replica set <Moped::Cluster nodes=[<Moped::Node resolved_address="127.0.0.1:27017">]>):
Run Code Online (Sandbox Code Playgroud)
即时通讯使用Rails 3.2.11有Mongoid 3.1.4.
可能有什么不对?
我正在使用Mongoid(v3)来访问MongoDB,并希望执行此操作:
db.sessionlogs.update(
{sessionid: '12345'}, /* selection criteria */
{'$push':{rows: "new set of data"}}, /* modification */
true /* upsert */
);
Run Code Online (Sandbox Code Playgroud)
这在mongo shell中工作正常.它也正是我想要的,因为它是一个单一的原子操作,对我来说很重要,因为我会调用它.我不想做两个操作 - 获取然后更新.我通过mongoid尝试了很多东西,但无法让它工作.
如何将MongoID取出并将此命令发送到MongoDB?我猜测在Moped级别有一些方法可以做到这一点,但该库的文档基本上不存在.
看起来Mongoid现在是基于性能和开发活动的Mongo的优秀ORM.不幸的是,我们在MongoMapper上并且需要迁移.
我们应该注意哪些问题或绊脚石?我们在Google上发现了一些过时的文章,并尝试在Mongoid Google网上论坛上发帖(虽然我们被禁止),但是会喜欢过去做过这种情况的SO成员的想法.
我们在Rails 3.2.12上.
谢谢!
正如标题所暗示的那样.我无法找到与Mongoid 3相关的任何内容.我发现的东西只适用于mongoid那些没有使用的旧版本Moped.
我发现了这个并没有用:
def self.install_javascript
getWeekJs = Rails.root.join("lib/javascript/getWeek.js")
if collection.master['system.js'].find_one({'_id' => "getWeek"}).nil?
collection.master.db.add_stored_function("getWeek", File.new(getWeekJs).read)
end
end
Run Code Online (Sandbox Code Playgroud)
此方法会将getWeek函数添加到system.js集合中.
怎么能在mongoid 3中完成?
我试图在rails中使用carrierwave mongoid将文件保存到gridfs中.由于此错误,我无法执行此过程:
BSON::Binary::InvalidType ("my file content" is not a valid binary type.
Please use one of :generic, :function, :old, :uuid_old, :uuid, :md5, :user.):
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决这个问题吗?
提前致谢.
mongoid3 ×10
mongoid ×5
mongodb ×4
ruby ×2
bson ×1
carrierwave ×1
gridfs ×1
heroku ×1
mongodb-ruby ×1
mongomapper ×1
moped ×1
ruby-2.0 ×1
unicorn ×1