2012-01-24 15 views
10

Przygotowałem gemset RVM poziomu projektu dla aplikacji Sinatra, którą uruchamiam, która połączy się z lokalną bazą danych z aktywnym rekordem. W celu przetestowania go próbowałem uruchomić aplikację testową poniżej:Błąd podczas ładowania klejnotu Active Record przy użyciu aplikacji Sinatra przy użyciu 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 

(wzięte z odpowiedzią na to pytanie: What's the best way to talk to a database while using Sinatra?)

Kiedy biegnę ruby -rubygems test.rb uzyskać to błąd:

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

ja już zainstalowany Active Record klejnot i to widać w gem list i rvm current wyświetlaczy katalogu c orrect gemset. Jestem nowy w RVM i myślę, że ma to coś wspólnego z tym, że nie ma prawidłowej ścieżki ładowania, ale mam wrażenie, że wszystko ustawiłem prawidłowo, więc doceniłbym sugestie co jest nie tak. Dzięki.

Odpowiedz

17

O ile wiem, wymaga "activerecord" został uznany za przestarzały. Zamiast tego spróbuj użyć

require 'active_record' 
+0

tak to było. Dzięki. – tks

+1

Dlaczego nie zmieniają nazwy klejnotu na active_record? To sprawiło, że straciłem dużo czasu :( –

+0

Nazwy klejnotów zwykle nie korelują z tym, jak są ładowane jako zależności. Po prostu patrząc na "Gemfile" mojego projektu widzę wiele konwencji w miejscu, z których żadna nie jest spójna. , 'capybara-webkit' VS' database_cleaner'. –

0

Jeśli nie masz już zainstalowany gem ActiveRecord, będzie można również uzyskać ten błąd:

otworzyć wiersz polecenia i uruchom następujące polecenia w terminalu:

#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 

Oto kod który używa klejnotu ActiveRecord, aby sprawdzić, czy wszystko jest skonfigurowane prawidłowo:

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

Jeśli wszystko działa, to źle wydrukowany "klejnot activerecord jest zainstalowany" bez żadnych błędów.

Powiązane problemy