Créez un Rakefile
dans le répertoire racine du projet.
# Rakefile
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
#Ci-dessous, du répertoire racine du projet à l'application du répertoire racine Rails.Spécifiez le chemin relatif vers rb
require_relative 'path_to_your_rails_app_root/config/application'
Rails.application.load_tasks
Le plug-in Railsways exécute rake routes
en interne, ce qui semble utiliser l'API RubyMine. [^ 1]
(Probablement en utilisant Run Anything
de RubyMine)
L'exécution de la commande avec Run Anything
se fait dans le répertoire racine du projet.
Par conséquent, si vous voulez exécuter la commande rake avec Run Anything
, vous devez créer un Rakefile
dans le répertoire racine du projet.
Il y avait aussi une description de cela dans l'aide officielle. [^ 2]
Personnellement, les chemins de fer ont été très utiles et je les ai beaucoup utilisés. Cependant, lors de l'ajout d'un frontal ou Terraform à une application, je souhaitais gérer les répertoires séparément. Ensuite, jusqu'à présent, le répertoire racine du projet = racine Rials, mais la configuration est la suivante.
.
├── terratorm
├── frontend
├── backend # Rails App
├── docker-compose.yml
└── README.md
«Rakefile» est parti.
Dans cet état, les chemins de fer ne fonctionnaient pas et j'étais en difficulté.
Si vous ouvrez le répertoire backend
avec RubyMine, cela fonctionnera, mais si vous faites cela, il sera difficile d'accéder à d'autres répertoires et ce sera moins pratique.
Je ne voulais pas abandonner les chemins de fer lors de son développement et je me demandais si cela pouvait être fait.
En passant, les tâches d'exécution de Railsways peuvent être modifiées dans les paramètres.
(Rialsways > Settings > Rake task name)
Par défaut, il s'agit de routes
, et vous pouvez voir que la commande est exécutée en donnant rake
comme préfixe.
Par conséquent, au début, j'ai pensé que cela pouvait être traité en modifiant cette commande d'exécution, mais c'était impossible.
J'ai changé le contenu en -f path_to_your_rails_root / Rakefile rouets
afin que rake -f path_to_your_rails_root / Rakefile rouets
soit exécuté, mais j'ai eu l'erreur suivante.
rake aborted!
No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb)
/Users/xxxxxx/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/rake-13.0.1/lib/rake/application.rb:698:in `raw_load_rakefile'
/Users/xxxxxx/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/rake-13.0.1/lib/rake/application.rb:104:in `block in load_rakefile'
/Users/xxxxxx/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/rake-13.0.1/lib/rake/application.rb:186:in `standard_exception_handling'
/Users/xxxxxx/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/rake-13.0.1/lib/rake/application.rb:103:in `load_rakefile'
/Users/xxxxxx/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/rake-13.0.1/lib/rake/application.rb:82:in `block in run'
/Users/xxxxxx/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/rake-13.0.1/lib/rake/application.rb:186:in `standard_exception_handling'
/Users/xxxxxx/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/rake-13.0.1/lib/rake/application.rb:80:in `run'
/Users/xxxxxx/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/rake-13.0.1/exe/rake:27:in `<top (required)>'
J'ai spécifié le fichier Rake avec l'option -f
, mais pourquoi ...
Il était inutile de le spécifier avec un chemin absolu.
De plus, Run Anything
pourrait être exécuté sans le Rakefile
dans la racine du projet en ajoutant l'indicateur -f
.
Je pensais que j'utilisais Run Anything
en interne, mais c'est peut-être différent.
Où diable les tâches Railsways sont-elles effectuées?
Jusqu'à présent, je n'étais pas particulièrement conscient de «Rakefile», et quand j'ai enquêté cette fois, je connaissais son rôle. C'est cette récolte que j'ai appris davantage sur le «râteau» au cours de mes recherches.
J'espère que cet article aide quelqu'un.
Recommended Posts