新手问题 初学 ruby 刚接触 mongoid 的一个问题

luciffer · 2012年08月30日 · 最后由 firsthym 回复于 2012年08月30日 · 3301 次阅读

gem install mongoid 之后照着 mongoid 官网的来自写了 Person 类如下

class Person
  include Mongoid::Document
  field :first_name
  field :middle_name
  field :last_name
end

保存为 test-mongoid.rb 然后 ruby test-mongoid.rb 运行报错 错误如下: in `class:Person': uninitialized constant Person::Mongoid (NameError)

请教各位大大 这个咋解决啊?

是不是需要把 mongoid 加进 gemfile 里面然后 bundle install 一下

require "mongoid"

@leozwa 大哥 我觉得就是你说的这个问题 弱弱的问一下 gemfile 放在和 test-mongoid.rb 同文件夹下就行了么?

#3 楼 @luciffer 我的理解是,在你的 test-mongoid.rb 顶部 require 就可以了。

@ashchan @firsthym 大哥们 我 require 了 但是又报了一个错误

错误如下 /home/shawn/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mongoid (LoadError)

这是什么问题呢?T. T

你不是在 rails 里用的?那不是连配置文件都没吗

@jjym 不是在 rails 里用的 配置文件我在官网 copy 了一份放在 test-mongoid.rb 同目录下

据官网说貌似本应该 Mongoid.load!("path/to/your/mongoid.yml") 可是现在 mongoid 好像加载不了呢

1.9.3p125 :001 > require 'mongoid'
 => true 
1.9.3p125 :002 > Mongoid
 => Mongoid 
1.9.3p125 :003 > Mongoid::Document
 => Mongoid::Document 
1.9.3p125 :004 > class AA
1.9.3p125 :005?>   include Mongoid::Document
1.9.3p125 :006?>   end
 => AA

我这正常。。顺便问下 lz 的 ruby 版本,1.8?

@jjym 我 ruby 版本是 ruby 1.9.3p0

刚刚我像你上面那样试了 我在 irb 里面也正常 可是为啥在别的地方写个.rb 文件跑就不行呢?

配置文件呢?如果是脱离了 rails 环境使用 mongoid 的话,你需要自己建立一个 mongoid.yml 写好你的配置信息,然后 Mongoid.load!("path/to/your/mongoid.yml") 进去就好了。

@rockylaw 配置文件写了 可是 Mongoid.load! 这个用不了啊 mongoid 加载不进去 T. T

require 都有错。。.gem list 有 mongoid 吗

@jjym 有的

不知道是不是$LOAD_PATH 的问题啊? 在网上找了半天 觉得$LOAD_PATH 这里有点可疑 可是对这个概念又挺懵的~

我试了一下,搞定了。 我的 mongoid.yml

development:
  sessions:
    default:
      database: mongoid_test_db
      hosts:
        - localhost:27017

我的 test_mongoid.rb

require "mongoid"
ENV['MONGOID_ENV'] = 'development'
Mongoid.load!("./mongoid.yml")

class Person
  include Mongoid::Document
  field :first_name
  field :middle_name
  field :last_name
end

p = Person.new(:first_name => 'rocky',:last_name => 'law')

puts p.first_name

#6 楼 @luciffer 你要 require 必须要有这个包嘛,所以gem install mongoid

需要 登录 后方可回复, 如果你还没有账号请 注册新账号