要更改ruby脚本中的目录?

nev*_*ame 94 ruby ruby-on-rails

我想创建一个新的rails应用程序并为该应用程序启动rails服务器,所有这些都来自ruby脚本.

我的代码看起来像这样:

#!/usr/bin/env ruby
system "rails new my_app"
system "cd my_app"
system "rails server &"
Run Code Online (Sandbox Code Playgroud)

但是,运行"rails server&"时,路径不在my_app文件夹中,而是在父文件夹中.

有没有办法在脚本中更改目录,以便我可以为该新应用程序运行"rails server","rake about"和"rake db:migrate"?

所有的工作周围的工作将不胜感激.

taw*_*taw 353

不要听他们,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
Run Code Online (Sandbox Code Playgroud)


Adr*_*ian 100

用途Dir.chdir:

Dir.chdir "my_app"
Run Code Online (Sandbox Code Playgroud)

  • 请记住,这可能会在整个程序的其余部分产生副作用.请参阅其他答案以避免潜在的错误. (19认同)

won*_*sz1 7

系统支持:chdir参数,该参数允许您指定其工作目录:

system("echo Test; pwd", chdir: '/tmp')
Run Code Online (Sandbox Code Playgroud)

输出'/ tmp'