要改变一个ruby脚本内的目录?

我想创build一个新的rails应用程序,并启动该应用程序的rails服务器,从ruby脚本开始。

我的代码如下所示:

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

但是,在运行“rails server&”时,path不在my_app文件夹中,而是在父文件夹中。

有没有办法改变脚本内的目录,以便我可以运行“rails服务器”,“耙约”和“耙db:迁移”该新的应用程序?

所有解决方法提示将不胜感激。

使用Dir.chdir

 Dir.chdir "my_app" 

不要听他们, Dir.chdir("dir")可能会做错误的事情。 你几乎总是想要的是限制变化到一个特定的上下文,而不会影响到这样的程序的其余部分:

 #!/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 

使用Dir.chdir来更改脚本的工作目录。

使用Dir.chdir(“[aString]”)

为什么你不能这样做:

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

以下几行具有相同的输出:

 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 

你也可以运行rails并创build一个应用程序(这可以在rspectesting等方面有所帮助):

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

而且你可以运行一个rails服务器;)