Pour changer de répertoire dans un script Ruby?

Je veux créer une nouvelle application de rails et lancer le serveur de rails pour cette application, à partir d’un script Ruby.

Mon code ressemble à ceci:

#!/usr/bin/env ruby system "rails new my_app" system "cd my_app" system "rails server &" 

Toutefois, lors de l’exécution de “rails server &”, le chemin d’access n’est pas dans le dossier my_app, mais dans le dossier parent.

Existe-t-il un moyen de changer de répertoire dans un script pour que je puisse exécuter “rails server”, “rake about” et “rake db: migrate” pour cette nouvelle application?

Tout travail autour des astuces serait apprécié.

Utilisez Dir.chdir :

 Dir.chdir "my_app" 

Ne les écoutez pas, Dir.chdir("dir") fera probablement la mauvaise chose. Ce que vous voulez presque toujours, c’est limiter le changement à un contexte particulier, sans affecter le rest du programme comme ceci:

 #!/usr/bin/env ruby system "rails new my_app" Dir.chdir("my_app") do system "rails server &" end # back where we were, even with exception or whatever 

Utilisez Dir.chdir pour modifier le répertoire de travail d’un script.

Utilisez Dir.chdir (“[aSsortingng]”)

Pourquoi tu ne peux pas le faire comme ça:

 #!/usr/bin/env ruby system 'rails new myapp && cd myapp && rails server &' 

Les lignes suivantes ont la même sortie:

 puts Dir.chdir("/tmp") { IO.popen("ls -la") { |io| io.read } } puts IO.popen(["ls", "-la", "/tmp"]).read puts IO.popen("ls -la /tmp").read # drwxrwxrwt 25 root root 16384 июля 23 01:17 . # drwxr-xr-x 22 root root 4096 июля 22 13:36 .. # drwxrwxr-x 12 itsnikolay itsnikolay 4096 июля 19 17:14 app_template # drwx------ 2 itsnikolay itsnikolay 4096 июля 21 15:04 .com.google.Chrome.dThb8f # drwx------ 2 itsnikolay itsnikolay 4096 июля 18 20:55 .com.google.Chrome.FGDBGc 

vous pouvez également exécuter des rails et créer une application (cela peut être utile dans les tests rspec, etc.):

 IO.popen("cd /tmp/ && rails new test_app").read 

et jamais vous pouvez exécuter un serveur de rails;)