2009-08-18 11 views
3

Je peux exécuter les commandes suivantes dans la console de mon application Rails et importer le fichier CSV dans ma base de données. Cependant, je voudrais faciliter le processus en créant simplement un script pour cela. Le problème est que je ne sais pas comment écrire un script spécifique à l'application. Pour les commandes ci-dessus pour exécuter, je dois lancer la console dans le dossier de l'application par ce qui suit:Exécution d'un script Ruby dans une application Rails

ruby script/console 

donc simplement copier/coller les commandes dans un fichier .rb et l'exécution ne fonctionnera pas.

Toute aide sera toujours apprécié :)

Répondre

5

Pourquoi ne pas utiliser script/runner "<code or filename here>? exécuter le script? Le script runner exécute le script dans le contexte de l'application give sans avoir de console.

+0

haha ​​Rails est génial;) Merci! – b1gtuna

+1

Une meilleure solution serait d'avoir une tâche de rake. –

+2

Dans 3.0+, utilisez 'rails runner path/to/script'. Note: le chemin de votre script est relatif à la racine de votre projet, pas à votre répertoire de travail. –

1

Vous devez appeler l'environnement des rails dans le script.

Essayez d'ajouter ceci au-dessus de vous déposer:

RAILS_ENV = ARGV[0] || "production" 
require File.join(File.dirname(__FILE__), *%w[.. config environment]) 
# assumes script is placed one level below the root of the application 
# second parameter is the relative path to the environment directory of your rails app 
2

Vous pourriez en faire une tâche râteau qui hérite de l'environnement. Placez-le dans lib/tâches/your_task.rake:

task :your_task => :environment do 
    # code goes here 
end 

puis exécutez-le à l'aide rake your_task. On peut l'appeler comme vous voulez.

Questions connexes