Existe-t-il un moyen de transmettre le fichier ruby, foo.rb à la console rails. Les résultats attendus seraient après le démarrage de la console sur l'environnement pour exécuter le fichier.
Ou tout autre moyen qui me permettrait d'exécuter un fichier dans un environnement rails, déclenché à partir de l'invite de commande.
ruby-on-rails-3
Haris Krajina
la source
la source
Réponses:
En fait, le moyen le plus simple est de l'exécuter avec
load
à l'intérieur durails console
la source
Vous pouvez utiliser
METTRE À JOUR:
Ce que nous avons également beaucoup utilisé ces derniers temps, c'est de charger l'environnement rails à partir du script lui-même. Considérez
doit.rb
:Cela fonctionne également si le script ou le répertoire de travail actuel ne se trouve pas dans le répertoire de l'application rails.
la source
f=File.new('path/to/file')
pour exécuter utilisez:f.rewind; eval f.readlines.join("\n");
eval(File.read ...)
pièce. Rails accepte un fichier Ruby comme argument pourrails runner
:Usage: rails runner [options] [<'Some.ruby(code)'> | <filename.rb>]
rails r path/to/filename.rb
fonctionnellement équivalent à labundle exec rails runner
commande mentionnée ci-dessus.En attendant, cette solution a été prise en charge.
Beaucoup plus simple maintenant.
la source
simple, sale et bloque le processus à la fin, mais il fait exactement le travail que je voulais.
la source
Envisagez de créer une tâche de râteau.
Pour le code dont j'ai besoin pour créer des enregistrements ou prendre en charge les migrations, par exemple, je crée souvent une tâche de rake comme celle-ci à partir de cette réponse . Par exemple:
Dans
lib/tasks/example.rake
:Et puis dans le terminal, exécutez:
la source
Parmi ces approches mentionnées précédemment, aucune ne semblait propre et idéale, comme vous vous attendriez à ce qu'un script autonome s'exécute (ne soit pas évalué ou envoyé via <redirection), mais finalement cela fonctionne parfaitement pour moi:
(pour Rails 3)
Insérez en haut de votre script:
Bien sûr, définissez votre propre chemin d'accès à l'application Rails dans la ligne APP_PATH.
De cette façon, je peux éviter d'avoir à entrer n'importe quel interactif
irb
ourails c
et peut tester mon script.rb à partir de l'invite du shell, avant par exemple. le programmer dans crontab.Il prend également en charge les paramètres de ligne de commande et minimise les niveaux de wrappers avant d'accéder à votre code.
CREDIT (montre également un exemple de Rails 2)
http://zerowidth.com/2011/03/18/standalone-script-runner-bin-scripts-in-rails.html
la source
Voici le hack que j'utilise:
Exemple:
Basé sur la réponse de @ moritz ici. Je l'ai changé, car le répertoire de travail pour
File.read
est la racine du projet Rails.Je sais que c'est une hérésie sérieuse, utilisant python pour aider un script ruby. Mais je n'ai pas trouvé de
relpath
méthode intégrée au rubis.Crédit: a
relpath()
été tiré de @MestreLion, Convertir le chemin absolu en chemin relatif donné un répertoire courant en utilisant Bashla source