242 votes

Tâches de rake rails disposent-ils d’accès aux modèles ActiveRecord ?

Je suis en train de créer une tâche personnalisée râteau, mais il semble que je n’ai accès à mes modèles. J’ai pensé que c’était quelque chose implicitement inclus avec la tâche de rails.

J’ai le code suivant dans lib/tasks/test.rake :

Et voici à quoi ressemble mon modèle de parent :

C’est un exemple assez simple, mais j’obtiens l’erreur suivante :

Toutes les idées ? Merci

419voto

gmoniey Points 3422

Figuré dehors, la tâche devrait ressembler à :

Avis le ' = > : environnement ' dépendance ajoutée à la tâche

17voto

Luke Schafer Points 6250

vous pourriez avoir besoin d’exiger de votre configuration (qui devrait spécifier tous vos modèles requis etc.)

par exemple :

Alternativement, vous pouvez exiger que chaque séparément, mais vous pourriez avoir des questions environnementales AR ne pas configurer etc.)

12voto

EmacsFodder Points 12284

Lorsque vous commencez à écrire votre râteau tâches, l'utilisation d'un générateur de stub pour vous.

Par exemple:

rails g task my_tasks task_one task_two task_three 

Vous recevrez un stub créé dans le répertoire lib/tâches my_tasks.rake (évidemment utiliser votre propre espace de noms). Qui ressemblera à ceci:

namespace :my_tasks do

  desc "TODO"
  task :task_one => :environment do 
  end  

  desc "TODO"
  task :task_two => :environment do 
  end  

  desc "TODO"
  task :task_three => :environment do 
  end  

end

Tous vos rails modèles etc. sera disponible dans le contexte actuel, à l'intérieur de chaque tâche bloc, sauf si vous êtes à l'aide de la production de l'environnement, auquel cas vous devez exiger des modèles spécifiques que vous souhaitez utiliser. Dans le corps de la tâche. (IIRC cela varie entre les différentes versions de Rails.)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X