252 Stimmen

Bieten Rails-Rake-Tasks Zugriff auf ActiveRecord-Modelle?

Ich versuche, eine benutzerdefinierte Rake-Aufgabe zu erstellen, aber es scheint, ich habe keinen Zugriff auf meine Modelle. Ich dachte, dies sei etwas, das implizit in der Rails-Aufgabe enthalten ist.

Ich habe den folgenden Code in lib/tasks/test.rake:

namespace :test do
  task :new_task do
    puts Parent.all.inspect
  end
end

Und so sieht mein Elternmodell aus:

class Parent < ActiveRecord::Base
  has_many :children
end

Es ist ein ziemlich einfaches Beispiel, aber ich erhalte den folgenden Fehler:

/> rake test:new_task
(in /Users/arash/Documents/dev/soft_deletes)
rake aborted!
uninitialized constant Parent

(See full trace by running task with --trace)

Irgendwelche Ideen? Danke

3voto

Lex Lindsey Punkte 511

Die :environment-Abhängigkeit ist zwar korrekt angegeben, aber Rake kennt möglicherweise immer noch nicht die anderen Edelsteine, von denen Ihre Modelle abhängen - in einem meiner Fälle waren es 'protected_attributes'.

Die Antwort ist, zu fliehen:

bundle exec rake test:new_task

Dies garantiert, dass die Umgebung alle Gems enthält, die in Ihrem Gemfile angegeben sind.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X