要改变一个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服务器;)