[Railways] Railways ne fonctionne pas lorsque la racine du projet RubyMine est différente du répertoire racine Rails.

Conclusion

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

Cause

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]

Contexte

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.

Information additionnelle

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?

Résumé

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

[Railways] Railways ne fonctionne pas lorsque la racine du projet RubyMine est différente du répertoire racine Rails.
Lorsque le projet n'est pas affiché dans eclipse
[Ruby on Rails] Lorsque l'acquisition de l'identifiant du paramètre ne s'est pas bien déroulée
[Rails] Résolution du problème selon lequel le délai d'expiration de la session ne fonctionne pas
[Rails] Lorsque le changement de disposition du dispositif n'est pas reflété
Lorsque le formulaire tel que Select of Materialize ne fonctionne pas correctement
[Rails] Annoter n'est pas exécuté lors de la migration
La séquence d'échappement (\) ne fonctionne-t-elle pas? (pour Mac)
Lorsque @Transactional of Spring Boot ne fonctionne pas
Ne reconnaît pas la bibliothèque lors de l'implémentation de jcaptcha
[Ruby on rails] Lors de l'exécution de la commande heroku, bash: heroku: command not found s'affiche. [Tutoriel Rails]
Traitement lorsqu'un ID qui n'existe pas dans la base de données est entré dans l'URL
Dans la boîte de dialogue d'avertissement lors du démarrage de l'applet, la vérification de "Ne pas afficher de la prochaine fois" ne fonctionne pas
[Remarque] Lorsque la vitesse d'accès à la page n'augmente pas
PATH ne passe pas ... La cause est le code du caractère
Comment résoudre le problème lorsque la valeur n'est pas envoyée lorsque le formulaire est désactivé dans les rails et envoyé
Un mémo lors de l'obtention du numéro entrant à l'aide de Broadcast Receiver sur Android 9/10 ne fonctionne pas
[Rails] Enregistrez lorsque l'événement ne s'est pas déclenché lorsque le nom du fichier javascript est le même que celui du contrôleur