使用RVM使用sinatra app加载Active Record gem时出错

时间:2012-01-24 03:12:48

标签: ruby activerecord rubygems sinatra rvm

我为我正在启动的sinatra应用程序设置了一个项目级别的RVM gemset,它将连接到具有Active Record的本地数据库。为了测试它,我尝试运行以下测试应用程序:

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?

当我运行ruby -rubygems test.rb时,我收到此错误:

/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,它显示在gem list中,rvm current显示正确的gemset。我是RVM的新手,我认为这与它没有正确的加载路径有关,但我觉得我已经正确设置了所有内容,所以我很欣赏有关错误的建议。感谢。

2 个答案:

答案 0 :(得分:17)

据我所知,'activerecord'已被弃用。尝试使用

require 'active_record'

代替。

答案 1 :(得分:0)

如果您尚未安装activerecord gem,您也会收到该错误:

打开命令提示符并在终端中运行以下命令:

#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";

如果一切正常,它将打印“activerecord gem is installed”,没有任何错误。