2012-01-24 13 views
10

Configuré un gemset RVM a nivel de proyecto para una aplicación sinatra que estoy iniciando y que se conectará a una base de datos local con Active Record. Con el fin de probar que traté de ejecutar la aplicación de prueba a continuación:Error al cargar la gema Active Record con la aplicación sinatra usando RVM

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 

(Tomado de la respuesta a esta pregunta: What's the best way to talk to a database while using Sinatra?)

Cuando corro ruby -rubygems test.rb consigo este de error:

/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) 

ya he instalado la gema Active Record y se nota en gem listrvm current y muestra el distintivo C orrect gemset. Soy nuevo en RVM y creo que esto tiene que ver con que no tiene la ruta de carga correcta, pero creo que configuré todo correctamente, así que agradecería sugerencias sobre lo que está mal. Gracias.

Respuesta

17

Por lo que puedo decir requieren que 'activerecord' haya quedado en desuso. Pruebe usar

require 'active_record' 

en su lugar.

+0

sí, eso fue todo. Gracias. – tks

+1

¿Por qué no cambian el nombre de la gema a active_record? Esto me hizo perder mucho tiempo, :( –

+0

Los nombres de las gemas tienden a no correlacionarse con la forma en que se cargan como dependencias. Solo mirando el 'Gemfile' de mi proyecto puedo ver varias convenciones, ninguna de las cuales es consistente. Por ejemplo , 'capybara-webkit' VS' database_cleaner'. –

0

Si no lo ha instalado la gema activerecord, también se consigue que el error:

Abra un símbolo del sistema y ejecutar estos comandos en el terminal:

#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 

Aquí hay un código que usa la gema ActiveRecord para ver si todo está configurado correctamente:

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

Si todo está funcionando, es w ill print "activerecord gem está instalado" sin ningún error.

Cuestiones relacionadas