2012-02-20 27 views
6

Tôi đã cố gắng để tìm hiểu về khuôn khổ Sinatra ruby ​​bằng cách làm theo hướng dẫn này:ruby ​​DataMapper sẽ không tải

http://net.tutsplus.com/tutorials/ruby/singing-with-sinatra-the-recall-app-2/

Tuy nhiên, sau khi chạy gem install và viết một máy chủ Sinatra đơn giản trong test.rb như vậy:

require 'sinatra' 
require 'datamapper' 

get '/' do 
    "Hello, World!" 
end 

nhưng khi tôi chạy lệnh ruby test.rb, tôi nhận được lỗi sau:

/usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': no such file to load -- datamapper (LoadError) 
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
    from datamapper_test.rb:2:in `<main>' 
[email protected]:~/Dropbox/Repositories/sandbox/sinatra$ ruby datamapper_test.rb 
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': no such file to load -- datamapper (LoadError) 
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
    from test.rb:3:in `<main>' 

có vẻ như nó không thể tìm thấy đá quý datamapper. Làm thế nào tôi có thể sửa lỗi này?

EDIT: sử dụng ruby ​​1.9.2

EDIT (một lần nữa): (parital) đầu ra từ gem list:

data_mapper (1.2.0) 
data_objects (0.10.8) 
datamapper (1.2.0) 
devise (1.4.5) 
directory_watcher (1.4.0) 
dm-aggregates (1.2.0) 
dm-constraints (1.2.0) 
dm-core (1.2.0) 
dm-do-adapter (1.2.0) 
dm-migrations (1.2.0) 
dm-serializer (1.2.1) 
dm-sqlite-adapter (1.2.0) 
d m-timestamps (1.2.0) 
dm-transactions (1.2.0) 
dm-types (1.2.1) 
dm-validations (1.2.0) 
do_sqlite3 (0.10.8) 
sinatra (1.3.2, 1.2.6) 
sqlite3 (1.3.5, 1.3.4) 
sqlite3-ruby (1.3.3) 
+0

Tại sao? Không cần thiết trong 1.9. – three

+0

yea, phải. Viết bình luận hài hước và sau đó xóa chúng một lần nữa. Nhận xét cuối cùng của tôi là câu trả lời cho nhận xét đã bị xóa về yêu cầu rubygems ... – three

+0

@three: Lỗi của tôi. Tôi sử dụng Ruby 1.8.7, vì vậy điều đầu tiên tôi nhận thấy là :) Dù sao, có vẻ như câu trả lời của tôi là vô ích bây giờ, vì vậy tôi sẽ xóa nó. –

Trả lời

27

Bạn cần phải require 'data_mapper', không phải datamapper.

Lưu ý rằng có một viên đá quý datamapper cũng như đá quý data_mapper, nhưng chúng giống nhau, chỉ các tên khác nhau. Bạn cần sử dụng data_mapper làm tên thư viện trong cả hai.

Theo như tôi có thể nói datamapper là một bản sao thẳng của data_mapper:

$ diff -r data_mapper-1.2.0/ datamapper-1.2.0/ 
diff -r data_mapper-1.2.0/Rakefile datamapper-1.2.0/Rakefile 
21c21 
< GEM_NAME   = 'data_mapper' 
--- 
> GEM_NAME   = 'datamapper' 
+0

Có, 'gem' data_mapper'' đã làm việc cho tôi. 'datamapper' là không cần thiết. –

0

gem install datamapper trong thiết bị đầu cuối của bạn có thể giúp đỡ :) Nhưng bạn sẽ cũng cần một cơ sở dữ liệu và một adapter và bạn sẽ muốn sử dụng đá quý bằng cách nào đó. Chúc may mắn và vui chơi với dm + sinatra!

+0

tôi đã chạy gem install datamapper, và có cả đá quý sqlite3 và nessecary được cài đặt. – GSto

Các vấn đề liên quan