2012-01-24 42 views
10

我爲Sinatra應用程序設置了一個項目級別的RVM gemset我開始將使用Active Record連接到本地數據庫。爲了測試它,我試圖運行下面的測試程序:當我運行ruby -rubygems test.rb我得到這個使用RVM加載Sinatra應用程序的活動記錄gem時出錯

test.rb

require 'rubygems' # may not be needed, depending on platform 
require 'sinatra' 
require 'activerecord' 

class Article < ActiveRecord::Base 
end 

get '/' do 
    Test.establish_connection(
    :adapter => "sqlite3", 
    :database => "hw.db" 
) 
    Test.first.content 
end 

What's the best way to talk to a database while using Sinatra?從答案帶到了這個問題)錯誤:

/Users/[user]/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- activerecord (LoadError) 

我已經安裝了Active Record的寶石,它在gem listrvm current顯示的C顯示出來正確的寶石。我是RVM的新手,我認爲這與它沒有正確的加載路徑有關,但我覺得我已經正確設置了所有內容,所以我會很感激關於錯誤的建議。謝謝。

回答

17

據我所知,require'activerecord'已被棄用。嘗試使用

require 'active_record' 

改爲。

+0

是的,就是這樣。謝謝。 – tks

+1

他們爲什麼不把gem重命名爲active_record?這使我失去了很多時間,:( –

+0

Gem名稱往往與它們作爲依賴關係的加載方式無關。只要看看我的項目的'Gemfile',我可以看到多個約定,其中沒有一個是一致的。 ,'capybara-webkit' VS'database_cleaner'。 –

0

如果您尚未安裝ActiveRecord的寶石,你也會得到這個錯誤:

打開命令提示符窗口,並在終端中運行以下命令:

#Find if the active record gem is already installed on your computer: 
gem query --local 

#See the downloadable gems, and see if activerecord is still available: 
gem query --remote --name-matches activerecord 

#Install your gem: 
gem install --remote activerecord 

#See if it installed successfully and is in the installed gem list: 
gem query --local 

下面是一些代碼它使用ActiveRecord gem來查看一切是否正確配置:

#Ruby code 
require 'active_record' 
class Dog < ActiveRecord::Base 
    has_many :dog_tags 
end 
puts "activerecord gem is installed"; 

如果一切正常,它會w虐待打印「activerecord gem安裝」沒有任何錯誤。

相關問題