2012-01-26 1 views
1

첫 번째 사항 : 저는 Ruby 1.9.3 및 DataMapper 1.2.0을 사용하고 있습니다. DataMapper : 개체 인스턴스를 나열 할 수없고 DateTime을 인스턴스화 할 수 없습니까?

나는 다음과 같은 단순 해 보이는 모델 생성 : 내가 IRB 쉘이를 해고 할 수

class User 
    include DataMapper::Resource 

    property :id,   Serial 
    property :username,  String 
    property :password,  BCryptHash 
    property :name,   String 
    property :email,  String 
    property :created_at, DateTime 
end 

를, 그것은 데이터베이스를 생성하고, 모두가 행복입니다. 그런 다음 시도해 보겠습니다.

콘솔에 인쇄 할 수있는 모든 User 인스턴스를 수신하고 모든 속성을 그대로 유지합니다. 나는 tim.save!를 달리고 성공을 볼 수있다. 그러나이 시점에서 사용자를 나열하려고하면 오류가 발생합니다.

irb(main):001:0> User.all 
(Object doesn't support #inspect) 
=> 
irb(main):002:0> User.first 
NoMethodError: undefined method `new!' for DateTime:Class 
    from /usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/gems/1.9.1/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:153:in `next!' 
    from /usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/gems/1.9.1/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:153:in `block in read' 
    from /usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/gems/1.9.1/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:276:in `with_connection' 
    from /usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/gems/1.9.1/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:141:in `read' 
    from /usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/repository.rb:162:in `read' 
    from /usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/model.rb:377:in `first' 
    from (irb):5 
    from /usr/local/Cellar/ruby/1.9.3-p0/bin/irb:12:in `<main>'' 

실마리가 있습니까? 다른 사람은 #inspect을 지원하지 않기 때문에 SO 또는 Google에 실제로 나타나지 않으며 Ruby stdlib 문서에는 DateTime에 대해 new! 메소드가 없습니다.

+0

열 유형을'DateTime'으로 지정 했음에도 불구하고'DateTime.now' 대신에'Time.now'를 사용하여 자신을 만들고 있음에 유의하십시오; 그것을 바꾼다면 도움이 될까요? – Phrogz

+0

잘 잡았다.하지만 둘 다 시도했다. (DM 문서의 어딘가에서 읽고 쓸 수있다.) 같은 결과. – Tim

+0

OK; 미안, 더 이상 도울 수 없어, 나는 DM이 아니라 [Sequel] (http://sequel.rubyforge.org)을 사용한다. – Phrogz

답변

2

이것을 알아 냈습니다. Ruby 1.9.3으로 전환 한 이후로 다시 사용하지 않고 사용했던 do_sqlite3 보석의 버전과 관련이 있습니다. this bug에서 언급했듯이, 작동하기 전에 내 do_* 개의 보석을 모두 다시 설치해야 1.9.3과 다시 연결됩니다.